Added Extendable interface and refactored ParameterizedType to allow Extension of ParameterizedType
Remove ExtandableType and refactor to be more abstract