added several files, added user interface, and reformatted all the code