removed timer dependency, modernized