Add features and refactor source code.