compose + decompose path