Update scoring algorithm

This function is probably an elegant way as we can delegate the scores out to multiple functions, so leave this function