What do you think of using using the Default class and generic definitions to avoid the dozens of Nothing needed.
Default
Nothing
I'd be ok with doing this.
You might also consider looking into uniplate (hackage, github).