Part 28 starts a small refactor. We start replacing our custom linked list with a ring buffer implementation for our undo system. This change will provide better performance characteristics and more predictable memory usage. They’re simpler and more predictable than dynamic linked lists.