I think we can avoid this complexity by having people use methods on the Table class to define their associations. We could use proxy objects so associations don't end up ding all the models in an app. I know in the past the declarative associations need to be worked around as they are limited by PHP. Having an initialize method would give one consistent way to define associations.