Enh/refacto async await

closes #9