add object-oriented abstraction over pathnames