Restructuring, but not really optimizing yet
Breaking out scorer, adding Cython version