update

fully working copy