Refactoring & closes #1.