Maybe I'll decide to finish the cpp version eventually.