use classes to represent options