add commands feature. close #4