enable custom validation messages in Interaction model
move validates() from the Interaction model to VirtualModel
refactor Action to inherit from Virtual Model validation