Modified lib architecture in order to make it more generic. This way it
will be possible to use AlarmManager on Android.