Improves Observer API. Adds documentation.