added interaction loop