First commit of mostly-working program :)