[rubocop] Use sexy validation
Add missing validation
[refactor] Consolidate same logic into one method
[refactor] Reduce complexity

- Extract scoreing logic to another class
Reduce lines

umm...