add the closure and decrator