setup functional programming