checkpoint (very wonky, but it works)