Added final version (implemented features required by course)