add semi-working solution