Correctly clean up when calling removeComponents() by delegating the remove operation for each component to removeComponent()