work on decompose