changes related to decompose function