allow custom observer