finished solution description and implementation