Trying to go more object oriented with inherentence etc