improvements, not quite right