separate the definition and implementation of function class