Additional changes for parsing optional arguments. Also added some extra testing around a few of the predicates. There is still more work to be done, but at this point the interface should be usable for most things.