some progress but not done yet