update
some improvements