Shift some logic to interface