closed #849
closed #995
closed #1037 closed #1199