First commit. Basic functionality working. Almost there...