Decompose method should have the same interface as others.
Added a comlement module.