Splitting things into files

also adding (some) stl support