add @Canonical