add some improvements