Type of socket do not strongly associated with real type of value. Int socket internally can be represented as field, shader document or as actually int value. This flexibility allow to do a value be a generic in high level logic. ## Socket type, declared in node tree settings Light changes of socket type already can be done via dynamic declaration by editing real sockets. Main goal of socket of a generic type is changing a type only in evaluation. This means, type can depend on context, some specific data, it can be different for the same node in different threads in the same time. Node tree is entity of evaluating context. User side of allowing to define type slot in node tree settings: ![](https://hackmd.io/_uploads/HJkhJaNKh.png) On instance of node tree, this settings represented as enums with list of early pre-defined types: ![](https://hackmd.io/_uploads/B1nNgTNY3.png)