better features
close #279
merge master