Revert "free3"

This reverts commit 6e4de607327c664cd350334d97680fb2e673c1c5.
Revert "free2"

This reverts commit 1e55fc8bc38b10a097b683253568e0710c87a1db.
Revert "free1"

This reverts commit 07be39cba81f9cc20236b0f4efbc4855a9302df1.