Added additional error handling/checking, and fleshed out full recursive operation, as well as added additional verbosity when -v option specified