Yarn

@adrian-wang @GraceH @shimingfei @lvsoft

Please review my code.
why not to make the version configurable?