(Cpp) redefine follow to follow away abstract types