refactor Flow to be more generic and create new Enumeration base class