Cleaned up Observer interface. *BREAKING CHANGES*