this is and will be more object oriented than the previous