Replace observers with callbacks