Implement better constructor handling so we can create objects of a more derived type than the generic link