require observer