* Replace CSV by DSV (delimiter-separated values).

Repetition data save:
* Inside the study data file, refer to cards and their fields by their indices (ids) in the dictionary array. Each time, the indices are sequential numbers starting at 0, without spaces. The maximum used values can be found out from the dictionary itself.
* Save study data only of existing cards to the study file.
* Exporting cards to another dictionary:
Use a separate format, which contains all card information:
    - used fields: ids, names
    - card contents
    - card study data
* When deleting fields, delete the card study records, which use them.
* Porting dictionaries:
    - In order to preserve the study data, always copy a dictionary file along with the user-specific study data.
    - When loading a dictionary, if the modification dates of the dictionary file and the study file are not equal, show a warning:
        o dictionary > study: "Dictionary was modified without saved study data".
        o dictionary < study: "The study data was modified through another copy of this dictionary".
* User-side file name: 
	- study data
    - repetition data

Features:
* Add saving session option, default: true.
	The user starts the program and the last used session opens, including the spaced repetition window.
	On the other hand, there is already a possibility to open a dictionary file, which is associated with the Freshmemory program. How about opening SR-window? - Store this option in the dictionary-specific user file. Scenario: user opens one dictionary for daily training (SR-window), and another one - for editing (no SR-window), third one - for fast word repetition (word drill window).
		<session type="spaced repetition" />
		<session type="empty" />
		<session type="word drill" />
* Log: ?
	- Start/stop, load/save
	- Repetitions
	- Card editing, adding, deleting.
* Config: geometry, session, options.
* Spaced repetition algorithm:
	- Base: SM2
	- Early and late repetition
	- Adding scheduling randomness.

Options:
	- Card selection for training: random (default), subsequent.
	
Public description:
* Transparency. Freshmemory uses transparent, XML-based file formats. The dictionary is always loaded from and saved into a specified file. The user data (repetitions, options) is stored in a user-specific directory. The dictionary file can be freely moved and copied without revealing user-specific data. The dictionary file stores only card contents, e.g. foreign words and translations. No user-specific data, like training results, is saved into the dictionary file, - it's saved to a user-specific directory. The user data file is associated with the dictionary file by its unerversal identifier (UUID). The dictionary file can be freely moved or copied within a computer still keeping its association with the user training data by its UUID. If required, the user training data can be manually copied to another computer and correctly used with the same dictionary. Freshmemory never saves any data to "unknown" location. All user data can be quickly found under the user-specific directory. The training data is saved into separate files according to the associated dictionaries, and can be easily found by their UUIDs.

* USB stick. Can be run from a removable storage, e.g. USB stick.
	- To-do: how to store the user-specific data?
		Option: "User data location:"
			- user directory (/home/zavulon/.config/freshmemory/)
			- beside the program (C:/install/freshmemory/)
	- To-do: where to store general data: geometry, session?
		The same above option.

* Multi-field card support. Cards can store information on multiple fields. For example: a foreign word, its pronunciation, translation, example. The fields can be easily turned on and off to meet specific training needs. The same tool can be used even to swap the question and answer fields.
	- The training data is saved separately for each question-answer pair. It means that the repetition data for the same card will be different depending what fields are selected to be the question and answer.
	
* Displays statistical information about the training session.

* Training material managing. All cards can be organized into individual dictionaries, stored in their own XML-based files. The dictionary files can be freely moved, copied or shared between people.
	- To-do: card categories? Different categories can share common cards and have several own ones.
	
* User-friendly interface. Yet powerful and customizable enough to meet specific training needs.

* Support for dictionary formats: import from/export to -  delimiter-separated values (DSV), CSV, own XML-based format
	- To-do support of the Mnemosyne backup-format (their XML-format).
	- List a number of resources from where to take ready dictionaries: 
		http://www.mnemosyne-proj.org/downloads/cards.php
		http://www.flashcardexchange.com/