Based on Bjarne Stroustrup program