removed selectFirst in favor of reduceFirst because it doesn't drop data.