finished keith numbers(untested)