Wrote first version, minus diagrams