add __enter__ and __exit__ methods