done almost but not yetcomplete