How about returning the sub-type from this method? This would avoid the cast at the calling method above? Might read a bit nicer.