added source vector and multiplyer
clean up and unit testing