here is the decomposition part