efficiency improved
new version