++ near final version

almost finished