feature: rewrite the sdk in coffee, and add grunt tasks