fixes #1 by providing elements with their own timers and signals