refactor FunAction, add stats