a lot of small improvements
merge