Refactored observe() to always return a handle.
Merged into a single method.