mark: removing unused codez
mark: first attempt at a numpy version
mark: numpy version now calculating correctly although somehow more slowly
mark: removing prints
mark: optimisation part I