Using composition, on the other hand, everything must be redefined. However, the new functions can still make use of the functionality provided by the original abstraction, so they tend to be rather short. However, the overall program tends to be longer, as it must redefine every operation.