First version(include countless bugs)