# Coarse-grained or hierarchical dependencies
## 2024-10-09
Flip the default.
All fields are part of the identity of the tracked struct by default unless themselves tagged as `#[salsa::tracked]`.
## OLD
Basic idea is that you should be able to flag a tracked function to call it "coarse":
```rust
#[salsa::tracked(coarse)]
fn foo(db: &dyn crate::Db) {
let x = TrackedStruct::new(...);
let y = TrackedStruct::new(...);
}
```
If you mark a tracked struct as coarse,