Hi dear great OO designers Here is a little challenges for your brainy souls :) In Moose when we compute metrics it may happen than a tool (often external to pharo) does not compute a metrics and when we request it in moose we check and often we return a not so good -1. I'm trying to brainstorm on a solution - first may be the simplest way is to not invoke a metrics when it is not computed. But it means that we should know it and that we should have a registration mechanism. After all this is probably the best solution. - Second we were thinking to use exception but when we have multiple entities missing one metrics.... I have serious doubts. - Second I was thinking about having the following behavior testCollect | uarray collected | uarray := UniformOrderedCollection new. uarray add: 10. uarray add: 20. uarray add: (MissingValue discarding). collected := uarray collect: [ :each | each ]. self assert: collected size equals: 2. testDo | res uarray | uarray := UniformOrderedCollection new. uarray add: 10. uarray add: 20. uarray add: (MissingValue discarding). uarray add: 40. res := 0. uarray do: [ :each | res := res + each ]. self assert: res equals: 70. testCollectDefaulting | uarray collected | uarray := UniformOrderedCollection new. uarray add: 10. uarray add: 20. uarray add: (MissingValue default: 33). collected := uarray collect: [ :each | each ]. self assert: collected size equals: 3. self assert: collected third equals: 33 I basically started to implement do: aBlock "Refer to the comment in Collection|do:." 1 to: self size do: [:index | (self at: index) toDo: aBlock on: self] collect: aBlock "Evaluate aBlock with each of the receiver's elements as the argument. Collect the resulting values into a collection like the receiver. Answer the new collection." | newCollection | newCollection := self species new. self do: [ :each | each toCollect: aBlock on: newCollection ]. ^ newCollection and DiscardingValue >> toCollect: aBlock on: aCollection "discard computation" ^ self Object >> toCollect: aBlock on: aCollection ^ aCollection add: (aBlock value: self) So I imagine that you see the design and I wanted to get your point of view. -- Using Opera a kind of bad mail client but far better than thunderbird