functional programming update