copied over casmo.py