implements options obj, allows circular ref check disable