no faster and a few more steps, but now there's more human logic