     if Enum.find(lista, fn xa -> Enum.find(listb, fn xb -> xa == xb end) end), do: true, else: false
   end
 
-  defp expr_with_imports(expr, view, router_helpers, error_helpers, gettext) do
+  defp eval_expr(expr, modules, assigns_to_update, assigns_in_expr, current_assigns) do
+    {safe, _assigns} = expr_with_imports(expr, modules)
+      |> Code.eval_quoted([assigns: assigns_for_expr(assigns_to_update, assigns_in_expr, current_assigns)])
+    safe
+  end
+
+  defp expr_with_imports(expr, modules) do
     #TODO: find it in the web.ex
-    # Find corresponding View
+    {view, router_helpers, error_helpers, gettext} = modules
     quote do 
       import unquote(view)
       import Phoenix.Controller, only: [get_csrf_token: 0, get_flash: 2, view_module: 1]

          hash_and_value = Enum.map(exprs, fn hash ->
            {:expr, expr, assigns_in_expr} = Drab.Live.Cache.get(hash)
            if has_common?(assigns_in_expr, assigns_to_update_keys) do
              {safe, _assigns} = expr_with_imports(expr, view, router_helpers, error_helpers, gettext)
                |> Code.eval_quoted([assigns: assigns_for_expr(assigns_to_update, assigns_in_expr, current_assigns)])
              new_value = safe_to_string(safe)
              {hash, new_value}
            else
              nil

              {:expr, expr, assigns_in_expr} = Drab.Live.Cache.get(hash)

              if has_common?(assigns_in_expr, assigns_to_update_keys) do
                safe = eval_expr(expr, modules, assigns_to_update, assigns_in_expr, current_assigns)
                new_value = safe_to_string(safe)

                {hash, new_value}
