rewrite task, add lib, add compiler, fix stuffs