added interaction function