use an ADT instead of BackendSpecificUpdate