Intro function signature should be small- the fewer the arguments the better what types should be passed into those arguments why switch and if cost such harm in the software structure ? -> how to get rid of them ? why assign operator is consider harmful ? Many software problems can be avoided by constraining state changing operators, and side effects. How to structure our functions making error handling clean and maintainable fashion ? Function arguments