Is there a way to use the `.UserTask` with a custom data structure instead of a plain `string`? Maybe with a custom `StepBody` and custom data model or something. So with reference to:  I need to be able to pass in the **username** and **rejection reason** so I can capture that information. So here, where I call... ```cs await _workflowService.PublishUserAction(actionKey, username, optionValue); ``` ...in my web api controller I can pass more than just the option value and consume that from a step. Also how do I access the `username` passed in here in which ever of the `StepBody`s get called so i can assign this to the workflow data item?