update, develop by readline, :)