Cleaned implementations up, now using constraint kinds for more flexible collections.