I started refactoring some of the schema packages trying to decouple them in my personal branch. It's becoming clearer after some of these conversations on how to proceed. 

I'm removing some utility methods that seem unrelated to the schema objects while breaking them down into immutable and mutable versions. I'll keep doing this until the dust settles and then maybe we can do a peer review of the developments there.

Thanks,
Alex