fix flickering block drops
fix a block from being cleared twice
some refactoring before intersecting chains