declaratively