flatten requires