add declarative programming