use_canonical definition option and refactoring
Merge pull request #54 from TSMMark/feature/use-canonical-definition

Feature: use canonical definition