diff --git a/test/blockstructured/nonlinear/nonlinear.ufl b/test/blockstructured/nonlinear/nonlinear.ufl
index 7d931aa4b9452e76cacacf01dd0278024121a423..d636ea9b1d6282da1e43eb440fa7281fb51b8033 100644
--- a/test/blockstructured/nonlinear/nonlinear.ufl
+++ b/test/blockstructured/nonlinear/nonlinear.ufl
@@ -5,8 +5,10 @@ x = SpatialCoordinate(cell)
 f = -4
 g = x[0]**2 + x[1]**2
 
-V = FiniteElement("CG", cell, 1, dirichlet_expression=g)
+V = FiniteElement("CG", cell, 1)
 u = TrialFunction(V)
 v = TestFunction(V)
 
 forms = [(inner(grad(u), grad(v)) + u*u*v - f*v)*dx]
+dirichlet_expression = g
+is_dirichlet = 1
diff --git a/test/blockstructured/poisson/3d/poisson.ufl b/test/blockstructured/poisson/3d/poisson.ufl
index 05fc1a8db5bd923bd1d2ba44d98ef04b18bdd675..562606820cf377a80cad2a0826f5207d4f5a2a5d 100644
--- a/test/blockstructured/poisson/3d/poisson.ufl
+++ b/test/blockstructured/poisson/3d/poisson.ufl
@@ -5,9 +5,12 @@ x = SpatialCoordinate(cell)
 g = x[0]**2 + x[1]**2 + x[2]**2
 f = -6
 
-V = FiniteElement("CG", cell, 1, dirichlet_expression=g)
+V = FiniteElement("CG", cell, 1)
 u = TrialFunction(V)
 v = TestFunction(V)
 
 
 forms = [(inner(grad(u), grad(v)) - f*v)*dx]
+dirichlet_expression = g
+exact_solution = g
+is_dirichlet = 1
diff --git a/test/blockstructured/poisson/poisson.mini b/test/blockstructured/poisson/poisson.mini
index 9f0a270cf0f18b233cf562aa255694c29a5a5f90..98d4bd2636150eea063bc0259349f069d88473f9 100644
--- a/test/blockstructured/poisson/poisson.mini
+++ b/test/blockstructured/poisson/poisson.mini
@@ -11,8 +11,6 @@ extension = vtu
 
 [formcompiler]
 numerical_jacobian = 1, 0 | expand num
-exact_solution_expression = g
 compare_l2errorsquared = 1e-7
 blockstructured = 1
 number_of_blocks = 3
-
diff --git a/test/blockstructured/poisson/poisson.ufl b/test/blockstructured/poisson/poisson.ufl
index 2387c6261b9c8a7c86ac4cb703cf3b1abddf6cda..d8a7ef0ce23d9cc7cf96445509530af750199743 100644
--- a/test/blockstructured/poisson/poisson.ufl
+++ b/test/blockstructured/poisson/poisson.ufl
@@ -5,9 +5,11 @@ x = SpatialCoordinate(cell)
 g = x[0]**2 + x[1]**2
 f = -4
 
-V = FiniteElement("CG", cell, 2, dirichlet_expression=g)
+V = FiniteElement("CG", cell, 2)
 u = TrialFunction(V)
 v = TestFunction(V)
 
-
 forms = [(inner(grad(u), grad(v)) - f*v)*dx]
+dirichlet_expression = g
+exact_solution = g
+is_dirichlet = 1
diff --git a/test/blockstructured/poisson/poisson_matrix_free.mini b/test/blockstructured/poisson/poisson_matrix_free.mini
index 9a70d37187171b5d3e720f51e726e6ef21809823..a5f2fecc732804cec7b9e64f2186033b8aeeba1e 100644
--- a/test/blockstructured/poisson/poisson_matrix_free.mini
+++ b/test/blockstructured/poisson/poisson_matrix_free.mini
@@ -10,7 +10,6 @@ extension = vtu
 
 [formcompiler]
 matrix_free = 1
-exact_solution_expression = g
 compare_l2errorsquared = 1e-7
 blockstructured = 1
 number_of_blocks = 4
\ No newline at end of file
diff --git a/test/blockstructured/poisson/poisson_neumann.mini b/test/blockstructured/poisson/poisson_neumann.mini
index bbe8d1029f0dcd66180cbe3412115dee5922a1b6..93272e18a46bb9b6e4c3e1ee19894846fd330784 100644
--- a/test/blockstructured/poisson/poisson_neumann.mini
+++ b/test/blockstructured/poisson/poisson_neumann.mini
@@ -11,7 +11,6 @@ extension = vtu
 
 [formcompiler]
 numerical_jacobian = 1, 0 | expand num
-exact_solution_expression = g
 compare_l2errorsquared = 1e-8
 blockstructured = 1
 number_of_blocks = 4
diff --git a/test/blockstructured/poisson/poisson_neumann.ufl b/test/blockstructured/poisson/poisson_neumann.ufl
index ea0f406c7465d57d32137fb0c9dd6b5662da3423..867403d8920c6869eee6721a943c3cd6199c57b4 100644
--- a/test/blockstructured/poisson/poisson_neumann.ufl
+++ b/test/blockstructured/poisson/poisson_neumann.ufl
@@ -9,7 +9,7 @@ j = -2.*sgn*(x[1]-0.5)*g
 
 bctype = conditional(Or(x[1]<1e-8, x[1]>1.-1e-8), 0, 1)
 
-V = FiniteElement("CG", cell, 1, dirichlet_expression=g, dirichlet_constraints=bctype)
+V = FiniteElement("CG", cell, 1)
 u = TrialFunction(V)
 v = TestFunction(V)
 
@@ -17,3 +17,6 @@ v = TestFunction(V)
 ds = ds(subdomain_data=bctype)
 
 forms = [(inner(grad(u), grad(v)) - f*v)*dx - j*v*ds(0)]
+dirichlet_expression = g
+exact_solution = g
+is_dirichlet = bctype
diff --git a/test/blockstructured/poisson/poisson_tensor.mini b/test/blockstructured/poisson/poisson_tensor.mini
index 19135afd3b64ed514cf7e29b125cb26d244005ef..44ad633559f6d7809db7b42298a3e5613161017a 100644
--- a/test/blockstructured/poisson/poisson_tensor.mini
+++ b/test/blockstructured/poisson/poisson_tensor.mini
@@ -11,7 +11,6 @@ extension = vtu
 
 [formcompiler]
 numerical_jacobian = 1, 0 | expand num
-exact_solution_expression = g
 compare_l2errorsquared = 1e-7
 blockstructured = 1
 number_of_blocks = 4
diff --git a/test/blockstructured/poisson/poisson_tensor.ufl b/test/blockstructured/poisson/poisson_tensor.ufl
index 5b604e9b37ad19b40ef2b707f6dc428082a70813..df8bcbab312335e8e0c8e1160a145288187318fc 100644
--- a/test/blockstructured/poisson/poisson_tensor.ufl
+++ b/test/blockstructured/poisson/poisson_tensor.ufl
@@ -8,8 +8,11 @@ g = x[0]**2 + x[1]**2
 c = 8.
 f = -4.
 
-V = FiniteElement("CG", cell, 1, dirichlet_expression=g)
+V = FiniteElement("CG", cell, 1)
 u = TrialFunction(V)
 v = TestFunction(V)
 
 forms = [(inner(A*grad(u), grad(v)) + c*u*v -f*v)*dx]
+dirichlet_expression = g
+exact_solution = g
+is_dirichlet = 1
diff --git a/test/blockstructured/stokes/stokes.mini b/test/blockstructured/stokes/stokes.mini
index b2f9a73ad144051fd963adf6448711eeea13ec1e..6b342f294d25c361e55da1add3834bb8bfb407c6 100644
--- a/test/blockstructured/stokes/stokes.mini
+++ b/test/blockstructured/stokes/stokes.mini
@@ -11,7 +11,6 @@ extension = vtu
 
 [formcompiler]
 numerical_jacobian = 0, 1 | expand num
-exact_solution_expression = g
 compare_l2errorsquared = 1e-10
 blockstructured = 1
 number_of_blocks = 3
diff --git a/test/blockstructured/stokes/stokes.ufl b/test/blockstructured/stokes/stokes.ufl
index 0d7c58aa180a9d4586184d1eda6c53353bbbb67a..c8f630b84aae43a68221ace670fe9fcb027af47d 100644
--- a/test/blockstructured/stokes/stokes.ufl
+++ b/test/blockstructured/stokes/stokes.ufl
@@ -3,10 +3,8 @@ cell = quadrilateral
 x = SpatialCoordinate(cell)
 v_bctype = conditional(x[0] < 1. - 1e-8, 1, 0)
 g_v = as_vector((4.*x[1]*(1.-x[1]), 0.0))
-g_p = 8.*(1.-x[0])
-g = (g_v, g_p)
 
-P2 = VectorElement("Lagrange", cell, 2, dirichlet_constraints=v_bctype, dirichlet_expression=g_v)
+P2 = VectorElement("Lagrange", cell, 2)
 P1 = FiniteElement("Lagrange", cell, 1)
 TH = P2 * P1
 
@@ -16,3 +14,6 @@ u, p = TrialFunctions(TH)
 r = (inner(grad(v), grad(u)) - div(v)*p - q*div(u))*dx
 
 forms = [r]
+is_dirichlet = v_bctype, v_bctype, 0
+dirichlet_expression = g_v, None
+exact_solution = g_v, 8.*(1.-x[0])