added the concept of reopen, and class methods