Add new interact() function and small fixes