better, but needs tweaking