closed #870 closed #937
closed #1146
closed #1125 closed #1127