named args and pre and post conditions
formatting