CanConcat-typeclass-based solution