Naturally this left all developers in despair

reorganize into class to keep components encapsulated