implement 'open'