Refactored version with StringOption and BooleanOption.