Change the Type enum into a list of constants in the new type namespace
Put functions out of variable.h into variable.cpp and use std::list instead of homemade lists