add onOpen