Fix encapsulation for the class 'Action'

The class 'Action' is abstract. Because there's no pure virtual functions, we have to use protected constructors