More generalised and robust checkout