first commit of refactor.  implementing some custom types as classes, to
handle path and variable manipulation more easily