big refactor into multiple types of option
plus these
fixing failing test
correct check for bad argument count
format refactoring