added back GIL-blocking calls to numpy
cleaned up codebase, reduce GIL usage
gradient is working -- fixing multithreaded
some multithreading working