close #61, close #56, close #48, close #33