made everything async
librarized it