Refactoring & closes #2.