diff --git a/src/main/jastadd/OpenAPISpecification.relast b/src/main/jastadd/OpenAPISpecification.relast
index aec82e93449922c32596767376ad96469c7dfa42..98a7f8823eb39ed319f218e4681485fd2d1b136d 100644
--- a/src/main/jastadd/OpenAPISpecification.relast
+++ b/src/main/jastadd/OpenAPISpecification.relast
@@ -1,5 +1,5 @@
 //OpenAPI Object
-OpenAPIObject ::= <OpenAPI> <JsonSchemaDialect> [I:InfoObject] Serv:ServerObject* P:PathsObject* W:Webhook* [C:ComponentsObject] Sr:SecurityRequirementObject* T:TagObject* [E:ExternalDocObject] Ex:Extension* ;
+OpenAPIObject ::= <OpenAPI> <JsonSchemaDialect> I:InfoObject Serv:ServerObject* P:PathsObject* W:Webhook* [C:ComponentsObject] Sr:SecurityRequirementObject* T:TagObject* [E:ExternalDocObject] Ex:Extension* ;
 Webhook ::= <Key> p:PathItemOb;
 
 //Info Object
diff --git a/src/main/jastadd/ReverseParser.jrag b/src/main/jastadd/ReverseParser.jrag
index 2fe0543346d2d8cedd8248713724b5502637a2b3..613673176faf24e2f0e1ded919721ac77fd67438 100644
--- a/src/main/jastadd/ReverseParser.jrag
+++ b/src/main/jastadd/ReverseParser.jrag
@@ -167,13 +167,8 @@ public static Components ComponentsObject.reverseComponents(ComponentsObject com
         if(componentsObject.getNumS()!=0){
         Map<String, io.swagger.v3.oas.models.media.Schema>schemaMap=new HashMap<>();
         SchemaOb s;
-        for(SchemaTuple t:componentsObject.getSList()){
-        s=t.getO();
-        if(s instanceof SchemaObject)
-        schemaMap.put(t.getKey(),((SchemaObject)s).reverseSchema(s));
-        else
-        schemaMap.put(t.getKey(),((SchemaReference)s).reverseSchema(s));
-        }
+        for(SchemaTuple t:componentsObject.getSList())
+        schemaMap.put(t.getKey(), t.getO().reverseSchema(t.getO()));
         components.setSchemas(schemaMap);
         }
         if(componentsObject.getNumR()!=0){
@@ -733,6 +728,25 @@ public static io.swagger.v3.oas.models.tags.Tag TagObject.reverseTag(TagObject t
         io.swagger.v3.oas.models.media.Schema<Object> schema=new io.swagger.v3.oas.models.media.Schema<Object>();
         SchemaObject s=(SchemaObject)schemaOb;
 
+        if(s.hasI()){
+        schema = new ArraySchema();
+        ((ArraySchema) schema).setItems(s.getI().getSchema().reverseSchema(s.getI().getSchema()));
+        }
+        if(s.getNumAll() != 0 || s.getNumAny() != 0 || s.getNumOne() != 0){
+        schema = new ComposedSchema();
+        if(s.getNumAll()!=0){
+        for(AllOfSchema a:s.getAllList())
+        ((ComposedSchema) schema).addAllOfItem(a.getSchema().reverseSchema(a.getSchema()));
+        }
+        if(s.getNumAny()!=0){
+        for(AnyOfSchema a:s.getAnyList())
+        ((ComposedSchema) schema).addAnyOfItem(a.getSchema().reverseSchema(a.getSchema()));
+        }
+        if(s.getNumOne()!=0){
+        for(OneOfSchema o:s.getOneList())
+        ((ComposedSchema) schema).addOneOfItem(o.getSchema().reverseSchema(o.getSchema()));
+        }
+        }
 
         if(s.getAdditionalProperties() != null)
         schema.setAdditionalProperties(s.getAdditionalProperties());
@@ -758,9 +772,6 @@ public static io.swagger.v3.oas.models.tags.Tag TagObject.reverseTag(TagObject t
         schema.setExternalDocs(ExternalDocObject.reverseExternalDocs(s.getExt()));
         if(!s.getFormat().isEmpty())
         schema.setFormat(s.getFormat());
-        System.out.println(s.getI().getSchema().toString());
-        if(s.hasI())
-        ((ArraySchema) schema).setItems(reverseSchema(s.getI().getSchema()));
         if(s.getMaximum()!=null)
         schema.setMaximum(s.getMaximum());
         if(s.getMinimum()!=null)
@@ -789,25 +800,13 @@ public static io.swagger.v3.oas.models.tags.Tag TagObject.reverseTag(TagObject t
         if(s.getNumP()!=0){
         Map<String, io.swagger.v3.oas.models.media.Schema>properties=new HashMap<>();
         for(PropertyItem p:s.getPList())
-        properties.put(p.getName(), reverseSchema(p.getSchema()));
+        properties.put(p.getName(), p.getSchema().reverseSchema(p.getSchema()));
         schema.setProperties(properties);
         }
         if(s.getNumR()!=0){
         for(RequiredField r:s.getRList())
         schema.addRequiredItem(r.getValue());
         }
-        if(s.getNumAll()!=0){
-        for(AllOfSchema a:s.getAllList())
-        ((ComposedSchema) schema).addAllOfItem(reverseSchema(a.getSchema()));
-        }
-        if(s.getNumAny()!=0){
-        for(AnyOfSchema a:s.getAnyList())
-        ((ComposedSchema) schema).addAnyOfItem(reverseSchema(a.getSchema()));
-        }
-        if(s.getNumOne()!=0){
-        for(OneOfSchema o:s.getOneList())
-        ((ComposedSchema) schema).addOneOfItem(reverseSchema(o.getSchema()));
-        }
         if(s.getReadOnly()!=null)
         schema.setReadOnly(s.getReadOnly());
         if(s.getWriteOnly()!=null)
diff --git a/src/test/java/openapi/OpenAPIMain_test.java b/src/test/java/openapi/OpenAPIMain_test.java
index a033a7d1ce5cc659f76daa7a92b7397f8fad9d9f..70c888432d2d37397707fc99cb3d20ae2054b3f0 100644
--- a/src/test/java/openapi/OpenAPIMain_test.java
+++ b/src/test/java/openapi/OpenAPIMain_test.java
@@ -10,6 +10,7 @@ import io.swagger.parser.OpenAPIParser;
 import io.swagger.v3.core.util.Json;
 import io.swagger.v3.oas.models.OpenAPI;
 import io.swagger.v3.parser.OpenAPIV3Parser;
+import io.swagger.v3.parser.core.models.ParseOptions;
 import io.swagger.v3.parser.core.models.SwaggerParseResult;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
@@ -58,6 +59,8 @@ public class OpenAPIMain_test {
       FileWriter actualWriter = new FileWriter((writerName.substring(0, writerName.length() - 5) + "-actual.json"));
 
       // parsed openAPI object with swagger-parser
+      ParseOptions options = new ParseOptions();
+      options.setResolve(true);
       SwaggerParseResult result = new OpenAPIParser().readLocation(resource.getPath() + "/" + file, null, null);
       POJOOpenAPI = result.getOpenAPI();
       System.out.println("Loading expression DSL file '" + file + "'.");
@@ -77,11 +80,9 @@ public class OpenAPIMain_test {
 
       // OpenAPI in POJO to OpenAPI in JastAdd
       jastAddObject = OpenAPIObject.parseOpenAPI(POJOOpenAPI);
-      System.out.println(jastAddObject.getPList().getChild(0).getRef());
 
       // OpenAPI in JastAdd to OpenAPI in POJO
       POJOOpenAPI = OpenAPIObject.reverseOpenAPI(jastAddObject);
-      System.out.println(POJOOpenAPI);
 
       // validation of transferred OpenAPI
       JsonNode actualNode = mapper.readTree(Json.mapper().writeValueAsString(POJOOpenAPI));