Changed Program to use a factory for creation in order to help testing.
The program factory implementation (forgot to add files).
Some more files i forgot to add.