Our use of Cython to wrap the internal C++ engine (Griffon) is very heavy-handed and could probably be cleaner and more bug-proof with PyBind.