add ctrl_transfer abstraction to Device base class