close #116, close #140
close #106