Creating a Custom Value Provider and Factory