mark: numpy ftw, down from 24 -> 5 seconds per iteration
mark: now detecting negative cycles
mark: adding some tweaks