New implementation, includes Data.Sequence