i managed to break path generation while porting. this is priority number 1. other than that, there are at least 3 very evil things that need to be addressed to make the code not evil