Changing arguments to all internal functions to args objects

This is in preparation for adding optional arguments in the next commit.
Not checking for argument types because I've got it under control and
also the irony is so, so sweet.
added optional args (closes #2)