Building better controls, some refactoring