using list instead of a vector of output methods pointers