Add function support in program constructor
update factory
Merge branch 'master' of https://github.com/Pieter2406/OGP_assignment