Have you ever thought of Models/Maps that could get properties from parent?
can.Model({
document: ..
someProp: {
someMethod: function(){
this.attr('document') // this would get document value from upper "scope" if current scope does not have them
}
}
})