refactor using tuples and recursion so that i don't have 8 calls to get neighbor and I don't have to nastily filter out nulls (yuck).