Actions use Factory pattern and inheritance