Why is the context for Span so limited compared to the context for Transaction?

Hello, I'm trying to add some custom information to a span's context; however, I can only change the context's labels. I'm wondering why there is this limitation. Also, the span's context can receive this db and http objects upon creation; why are those objects so limited as well? It has only a few fields of information. Is this an agent limitation or a limitation in APM in general?