cleaned a bit; still needs work