separated dir version handling from dir itself; wrote specs for the whole bunch