bidirectional if_gen
auto_term improvements