Close #166, close #150, close #176, close #178