basic idea for building nested observers