almost there for revision - also very clean and neat