Fix redundancies and make it more OOP like