imperative coding