I had a go at an implementation of my own in Lil, using an imperative style rather than OOP. I tried to loosely follow the organization as shown here, but opted for a very different board representation, and I included some niceties like displaying board legends to aid in choosing the proper coordinates.
https://github.com/JohnEarnest/Decker/blob/main/examples/lil...
I'm really not convinced that OOP simplifies or clarifies this type of program.