built by @aaronzbest
based on ideas from @grundislavgames, @jess_haskins, and @ivydupler