#1 Added tests and re-factored the tasks to support sourceDir that is not the default.