Design dimensions of object-oriented languages