use objects for some things, handle pauses