#5 custom payload support

#5 Adds custom payload support

docs need to be updated still.
Why would you need those though?  It just really seems to muddy up the implementation.