Highly broken... in process of implementing methods and general refactoring