adds option to support an on_interaction callback