close #18
close #26
close #27