added bidirectional for implicits