abstract Interaction class