close #280
close #329, close #286