MAINT refactor, basically favoriing composition over inheritance