Refactoring the matching algorithm to take steps instead of doing all at once
refactoring grid class to split methods responsibilities
making pieces break continuously