improvments; not there yet