action fuctions should return a new promise