rough out the logic of it