a version that remember all widget