I wrote this a year or so ago, but basically I have stripped down everything as much as possible, and used the Pyramid as a loop machine: