lazy pattern update