task and command callbacks use their own types