start moving out functionality in OO