- major refactoring, make it simpler by using one scoring func