new version without mutable stategit add main.ml