factored evaluation switch into function table
also nice to have license