added the base function to build the others on