added ability to compose path using substitution