closed #1656 closed #1657 closed #1658
closed #1659 closed #1758 closed #1759