First Official Draft

First revision - works without multiprocessing.