So, a question related to this. How do I dynamically create an instance of an object that is 1 of many that implement an interface? For example, in the example above, say there are 3 types of user, but I only want to create an instance of 1 of them at any given moment. I suppose you could put each of them in their own class or method and call the appropriate class/method, but that adds an extra unneeded level of abstraction. Thanks in advance.