Some edits I don't remember.
Got tests passing.
Cleaned up order of options and added destination parameter.