add support for cancel in the middle; flat copy; override;