new timing mechanism, thanks to hellfire @ dfbinteractive