implement open method