Removed a lot of inhenritance, code is more organized now