#5 custom payload support

#5 Adds custom payload support

docs need to be updated still.
`getPayloadClass()` is needed here.