Refactored uniforms for better type safety

This is some initial work on refactoring Uniform to allow for better type safety