refactor action factory, className are inject from service container