better, tweaks, still needs work