Look into Autotap or AutoEnginunity. The later will handle bydirectional stuff.