initial commit
first crack at it, don't like the implementation so much