adding cache routine -- will cache data permanently
progress meter added