much better but probably needs more work