__init __exit is a must