Fix the structure of the implementation

Get rid of the timer and replace it with KVO, unify the KVO approach to a single setter based add/remove pattern