PLaying with Structural types, generics and implicits