tried zac approach, it failed, reverted back, freed more mem