Scoring Improvements, Code Quality and Perf Tweaks

Lots of work done, still need to implement several methods of scoring.
Merge remote-tracking branch 'origin/Ben_working'