Finishing touches

@swps I think I have everything finished up on this guy. Let me know what you think. Once we get this guy released we can have him consume himself with his gradle build, unfortunately the first build will be a little manual around the versions.
Should the message be in the IllegalArgumentException?  This argumentation seems odd.