expose observer() return function