More refactoring & closes #3.