data operations are now contained in a class