Merge pull request #5 from mor1/master

moar abstraction and structure