this causes cloning of the array :-( maybe clone it for the first time in some private static property, and use it so we avoid cloning every time?