(added) - most of functionality is done