A. Concept of allowing overiding of functions
B. Concept of hiding data
C. Concept of keeping things in differnt modules/files
D. Concept of wrapping things into a single unit