add more tests, replace template values with functions