Tidy up code
Various tweaks
Add tests for empty args
Documentation updates
Add introduction vignette