refactored everything to work in integer cycles instead of seconds; timing problems fixed themselves when I did that, which is rad