interact function