some improvements
merge