added traverse, rewrited serializer