Fully switched to the Groovy map-coercion approach, much cleaner
Validation pending a review of the approach