use object instead of class
refine string on Sequence, not on Tuple
simplify impl of string on Iterable