more detailed description for wrap method