def list_sample(collection, limit = 3):
	"""
		given an ordered collection (list, tuple, ...), return a string representation
		of the first limit items (or fewer), e.g. "itemA, itemB, itemC and 7 more"
	"""
	ln = len(collection)
	if ln > 1:
		if ln <= limit:
			return '%s and %s' % (', '.join(str(ws) for ws in collection[:min(limit, ln)]), collection[min(limit, ln)])
		return '%s and %d others' % (', '.join(str(ws) for ws in collection[:min(limit, ln)]), ln - limit)
	if ln > 0:
		return collection[0]
	return ''