A Cecil egy teljesen objektum-orientált nyelv, amit a jó minőségű, továbbfejleszthető szoftverek gyors előállításának támogatására alkottak meg. A Cecil egyesíti a multi-metódusokat egy egyszerű, osztály nélküli objektum modellel, egyfajta dinamikus öröklődéssel, modulokkal, és opcionális statikus típusellenőrzéssel. A példányváltozók a Cecilben kizárólag üzeneteken keresztül érhetők el annak érdekében, hogy a példányváltozókat újakra cserélhessük, vagy metódusokkal helyettesíthessük, és fordítva. A Cecil predikátum objektum mechanizmusa lehetővé teszi, hogy az objektumokat a futás idejű (változó) állapotuk alapján osztályozzuk. A Cecil statikus típusrendszere szétválasztja az altípusosság fogalmát a kód öröklődéstől, de egy egyszerű deklarációs készletet ad ennek megadására, és támogatja az általános esetet, amikor is a két gráf párhuzamos. A Cecil biztosít egy meglehetősen rugalmas paraméterezhetőségi lehetőséget, beleértve az explicit paraméterezett objektumokat, típusokat és metódusokat, úgy mint az implicit paraméterezett metódusokat, hasonlóan, mint a funkcionális programnyelvekben általánosan használt polimorfikus függvények. A Cecil egy olyan modularizációs mechanizmust támogat, ami lehetővé teszi külön-külön fejlesztett alrendszerek egységbezárását, típus ellenőrzését, ezzel elősegítve a részekre bontást. Az objektumok kívülről is kiegészíthetőek újabb metódusokkal, és példányváltozókkal, amik gyakran különálló modulokban találhatóak, ezzel támogatva egyfajta viselkedés-orientált, vagy feladat-orientált programozási stílust.