seems like Input and Output class names should be InputOptions and OutputOptions or something; this just doesn't sound right: input.getInputType();