Add two defensive stats
Swap inner defaultdict for numpy array

Hopefully this will be easier to merge at the end.