Add some support for argvs.
Some improvements whilst I'm at it.
Merge branch 'feature/options' into develop