Reworking types to be extendable allowing new chained types to be created and used