interaction programming