Maybe it would be better to use ByteBuf as payload and have PublicMessage implement ReferenceCounted. This allows to also use pooled buffers with it and have it handled correctly. Performance FTW ;)