merge pr
merge pr #2
merge pr #3
merge pr #5
merge pr #6
merge pr #7
merge pr #8
merge pr #11
merge rest