Rework CommandResult into generics version RemoteCommand so callback results do not need to be cast.