implementing SOM