Some quick work to extend class
Split up code into sub-modules