Added a Factory to enable easier customizeability with the use.