Code structure changes

This update starts implementing component classes that bigger, more
centeral classes use.