adding forcing term interface, factory, and basic implementation