split concrete type generation out of MessageMapper

fixes #1621