Extracted ExecutableFactory class from provider.
Separated Executable into separate classes to avoid having to do type-checks inside of the methods.