simulator abstracted into class