steps towards implementing directional pushing