-- static properties of the code All strings are UTF-8. Bytes within them are not characters. I try to label byte offsets as _offset, and character positions as _pos. For example, string.sub should never use a _pos to substring, only an _offset. Wish I had some static typing here. We're not going to try to write tests to catch issues like this. -- manual tests drawing draw a line, circle, rectangle, square, polygon select a point and move it select a point and name it persistence: draw a line, circle, rectangle, square, polygon, quit, restart. All the shapes you drew should still be visible. select a point and name it, quit, restart. Name is still visible. undo: naming points deleting points moving points resize: create a file containing a long line of characters without spaces. try resizing the window vertically and horizontally, as far as possible.