calls callback with proper context