semi working solution