actions abstract factory