The block operation starts with the touching set containing only the window being pushed, call it W. The touching set contains all windows moving together attached due to the block operation. New windows are added to the touching set as windows in the set hit other windows on the way. The closest window is determined by examining the plow set for windows. The algorithm for the PushRect function is similar to PlowRect in terms of determining the plow set of windows, however the closest window and its distance are also recorded for each window in the touching set. The closest distance is then compared to the distance to the border to see if the border is hit before the window, in which case the algorithm stops. Otherwise, the push distance is checked with the distance to the closest window. The closest window is added to the touching set, if the distance to the window is shorter. The push distance is then decreased by the distance to the closest window and the algorithm reenters the loop. Otherwise windows in the touching set are moved by the push distance and the algorithm stops. The pseudo-code algorithm of the PushRect function is listed in Appendix . In these algorithms the minimum size constraints are not implemented.