Almost Fully Functional (saving to file is left)