Added in some test and some nice documentation