Regading bidirectional Bridges:
I assume you have a buffer varable in the bridge containing the transported entity. To make it bidirectional you could either use 2 buffers, one for each direction or you could use none at all and directly link the "take from source cell" and the "deposit in other cell" logic. Then the move would be instant and the bridge can't be blocked at all. For that you could also just check if there is an entity to transport in one of the cells and room for the entity in the other call and just move it if both is true.
Another feature I would like is the ability to pause a bridge without removing it.