fixed #40
fixed #9
fixed #49
fixed #87
fixed #60
fixed #66
fixed #78
fixed #105
fixed #94
fixed #54
fixed #68
fixed #67
fixed #73
fixed #11
fixed #34
fixed #48
fixed #69
fixed #70
fixed #72
fixed #102