most implement, lots of details to fix