I made a similar request a while ago. Basically my suggestion is to eliminate the distinction between Block and Object, thus increasing the granularity of all operations/functionalities (including referencing, as you mention).
From my suggestion:
- What is now called an “Object” is really just a Block with children Blocks (paragraphs, images, properties etc)
- Everything is a Block, which can be nested within each other
- What are now called “Blocks” are types of Blocks (Paragraph Block, Bullet Block, Image Block etc.)
- What is now called a “Relation” is a Property Block. When nested under another Block, it gives its parent that property. The actual value for the property is given by its children Blocks.
- What is now called a “Set” is a Data Block (or maybe Aggregator Block?). It requires two children Property Blocks, one for Query (ex: Grab all Blocks containing a Property Block called “Due Date”) and one for View(ex: Calendar)
- What are now called “Types” are really “parent types”, containing one or more children types (as well as any other type of Blocks)
Link to my full post: