Replace observers with callbacks

Hey guys, finally I found time to do it. What do you think about it?
@sindrenm it's invasion!