use custom payload implementation