refactored Option class