This needs fleshing out, obviously.