close #27
close #28
close #39