removed seperate companion file
implemented class functions to make them none abstract