Hi, I am trying to figure out where to best place some mapping/data/stable methods. For example imagine method ~~~~~~~~~~~~~~~~~~~~~ MyRectangle>>oppositeSides ^ { #top -> #bottom. #bottom -> #top. #topLeft -> #bottomRight .... } asDictionary ~~~~~~~~~~~~~~~~~~~~ And then the class might have some other related methods such as ~~~~~~~~~~~ MyRectangle>>oppositeSideFor: aSide ^ self oppositeSides at: aSide ~~~~~~~~~~~~ So it's a method returning a mapping between opposite sides/corners and thus is really not going to change. Now I could place this in instance-side and create a new instance every time I wanted to use it (which doesn't seem practical), or I could put it in class-side. The problem I have with class-side is that naming is more like going through minefield (more than once I corrupted my image by naming a method or variable something I shouldn't have), and for whatever reason it feels like either metaprogramming or procedural programmming... That class side methods are pretty much global functions/variables... and short of constructors I am avoiding static methods even in other languages... but maybe using it is ok. Or maybe have it object an use singleton? The only oop-like approach I see would be to extend symbols (#top oppositeSide), or have separate objects for sides, but that seems like overkill. MySide subclass: #Top Top>>oppositeSide ^ Bottom new Are there any best practices regarding this? This is also true for actual data stored in methods/attributes (such as icons). P.s.: For english natives... Should the second method be ned "oppositeSideOf:" or "oppositeSideFor:"? Any ideas/pointers appreciated, Peter