final; add grid-based searching