Tons of changes. Issue #3 and issue #12.