begin reasoning OO approach
seperate file for object oriented approach