closed #918 closed #939
closed #919 closed #940
closed #942
closed #1299