not an easy problem to solve, but fun to think about