cleanup: move utils to _utils.py