add decompose_elements