Changed: Ditched the module approach. Class approach with dynamic inheritance instead