still buggy, but some revisions.