progress on free impl