added bidirection capabilities