address possible multiple timer condition
    --- uses singleton to ensure only one timer is running