add dirty check for circular data structure
new build