add canonical. close #14