implement "open"