- Split the different functionalities into separate submoduels. - Possibly restructure the entire ptr related thing. - Split large derives into multiple small, focused ones.