moar refactoring. adding timer, just because