completed working solution