add run.py for external use