refactored to be able to have more than one independant timer instance