one day i did intend to abstract all of this into a separate `GameLoop` class that can be configured
one day i did intend to abstract all of this into a separate
GameLoop class that can be configured to automatically multithread, but sadly just a pipe dream now





