re-implement full offline usage