Swap interface

Match Sayer's mock-ups :+1: