use class eval instead of reopening the class