Model now sets some default functions and requires some other functions.