initial commit. Should break up main file if possible.