make further improvements (still needs work)