added some work, now with STL