refactored. use FluentRecordSet for passing internal messaging.