closed #848
closed #917 closed #972 closed #1028