Refactoring, added Demo.