flesh out the functions we need.