first attempt to go a little more OO
first attempt to go a little more OO