closed #850 closed #896
closed #851 closed #900
closed #852 closed #901
closed #853 closed #885 closed #904
closed #1023