better

but needs a lot of work