has all the code organized into class