change to use exact collection length