added tests, and option class