nearly there, somewhat working