Components of Declarative Languages