a little better, but still holes

next target is eval function.