declarative design