partial rewrite and update README