diff --git a/test/heatequation/heatequation_dg.ufl b/test/heatequation/heatequation_dg.ufl
index 649c4db417432ed644493f05e87faa03785f8a84..d6eb5141d3e7743870ffb3e1dc5a07b456bb00c8 100644
--- a/test/heatequation/heatequation_dg.ufl
+++ b/test/heatequation/heatequation_dg.ufl
@@ -2,7 +2,7 @@ f = Expression("Dune::FieldVector<double,2> c(0.5); c-= x; return 4.*(1.-c.two_n
 g = Expression("Dune::FieldVector<double,2> c(0.5); c-= x; return std::exp(-1.*c.two_norm2());", on_intersection=True)
 
 cell = triangle
-V = FiniteElement("DG", cell, 1, dirichlet_expression=g)
+V = FiniteElement("DG", cell, 1)
 
 u = TrialFunction(V)
 v = TestFunction(V)
diff --git a/test/poisson/dimension-grid-variations/poisson_1d_cg_interval.mini b/test/poisson/dimension-grid-variations/poisson_1d_cg_interval.mini
index 58e6f2fbcdd6a73c9242c64b0aad09247c6bc3c4..5bafa51ff4759e438f13c0104af1e88e0842349f 100644
--- a/test/poisson/dimension-grid-variations/poisson_1d_cg_interval.mini
+++ b/test/poisson/dimension-grid-variations/poisson_1d_cg_interval.mini
@@ -8,6 +8,4 @@ name = {__name}
 extension = vtu
 
 [formcompiler]
-exact_solution_expression = g
-compare_dofs = 1e-14
 compare_l2errorsquared = 5e-8
diff --git a/test/poisson/dimension-grid-variations/poisson_1d_cg_interval.ufl b/test/poisson/dimension-grid-variations/poisson_1d_cg_interval.ufl
index d2b9134176d9533068e52d995f17bf1ad78a3523..5eefb2d7c12d0e18f1638949abb4bd0524512fd8 100644
--- a/test/poisson/dimension-grid-variations/poisson_1d_cg_interval.ufl
+++ b/test/poisson/dimension-grid-variations/poisson_1d_cg_interval.ufl
@@ -5,8 +5,11 @@ c = (0.5-x[0])**2
 g = exp(-1.*c)
 f = 2*(1.-2*c)*g
 
-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]
+exact_solution = g
+is_dirichlet = 1
+dirichlet_expression = g
diff --git a/test/poisson/dimension-grid-variations/poisson_1d_dg_interval.mini b/test/poisson/dimension-grid-variations/poisson_1d_dg_interval.mini
index f29c5712f0ed2fbeb9d686d95da9ed1a4c1eadc1..14789fb8909a76386ee98062a10b2c9a7f40fb19 100644
--- a/test/poisson/dimension-grid-variations/poisson_1d_dg_interval.mini
+++ b/test/poisson/dimension-grid-variations/poisson_1d_dg_interval.mini
@@ -8,6 +8,4 @@ name = {__name}
 extension = vtu
 
 [formcompiler]
-exact_solution_expression = g
-compare_dofs = 1e-2
 compare_l2errorsquared = 6e-7
diff --git a/test/poisson/dimension-grid-variations/poisson_1d_dg_interval.ufl b/test/poisson/dimension-grid-variations/poisson_1d_dg_interval.ufl
index 27b51cc41c49eefdfcc104767b7edc22e884f4e4..535d102440fa6c5f5405f61ab0ef82285dfeaa7a 100644
--- a/test/poisson/dimension-grid-variations/poisson_1d_dg_interval.ufl
+++ b/test/poisson/dimension-grid-variations/poisson_1d_dg_interval.ufl
@@ -30,3 +30,4 @@ r = inner(grad(u), grad(v))*dx \
   - gamma*g*v*ds
 
 forms = [r]
+exact_solution = g
diff --git a/test/poisson/dimension-grid-variations/poisson_2d_cg_quadrilateral.mini b/test/poisson/dimension-grid-variations/poisson_2d_cg_quadrilateral.mini
index 4bb79565aacf691ba50fa61e09de73b76f3dc2ed..c5ec6e72a870b19eee8d9b8f881c02c770c65da9 100644
--- a/test/poisson/dimension-grid-variations/poisson_2d_cg_quadrilateral.mini
+++ b/test/poisson/dimension-grid-variations/poisson_2d_cg_quadrilateral.mini
@@ -8,5 +8,4 @@ name = {__name}
 extension = vtu
 
 [formcompiler]
-exact_solution_expression = g
 compare_l2errorsquared = 9e-8
diff --git a/test/poisson/dimension-grid-variations/poisson_2d_cg_quadrilateral.ufl b/test/poisson/dimension-grid-variations/poisson_2d_cg_quadrilateral.ufl
index 74d3f2b1485e4d971e13a0a0601213f9b9b0dd60..d3771aacfe8f806cb3fd1e31d9ba581106885247 100644
--- a/test/poisson/dimension-grid-variations/poisson_2d_cg_quadrilateral.ufl
+++ b/test/poisson/dimension-grid-variations/poisson_2d_cg_quadrilateral.ufl
@@ -5,8 +5,11 @@ c = (0.5-x[0])**2 + (0.5-x[1])**2
 g = exp(-1.*c)
 f = 2*(2.-2*c)*g
 
-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]
+exact_solution = g
+is_dirichlet = 1
+dirichlet_expression = g
diff --git a/test/poisson/dimension-grid-variations/poisson_2d_cg_triangle.mini b/test/poisson/dimension-grid-variations/poisson_2d_cg_triangle.mini
index 7e10608212eb7c78b5e7ce599ddea9fecac346ff..4231151b2d1304afbec0cb5013593fde4e3a284e 100644
--- a/test/poisson/dimension-grid-variations/poisson_2d_cg_triangle.mini
+++ b/test/poisson/dimension-grid-variations/poisson_2d_cg_triangle.mini
@@ -10,6 +10,4 @@ name = {__name}
 extension = vtu
 
 [formcompiler]
-exact_solution_expression = g
-compare_dofs = 1e-14
 compare_l2errorsquared = 3e-7
diff --git a/test/poisson/dimension-grid-variations/poisson_2d_cg_triangle.ufl b/test/poisson/dimension-grid-variations/poisson_2d_cg_triangle.ufl
index 2bc0536e848da384b713db8661d11ef503bb4b57..e95064dfb1e0d947c51a1c021ac4f0f7a9f7adc1 100644
--- a/test/poisson/dimension-grid-variations/poisson_2d_cg_triangle.ufl
+++ b/test/poisson/dimension-grid-variations/poisson_2d_cg_triangle.ufl
@@ -4,8 +4,11 @@ x = SpatialCoordinate(cell)
 f = -4.
 g = x[0]*x[0] + x[1]*x[1]
 
-V = FiniteElement("CG", "triangle", 1, dirichlet_expression=g)
+V = FiniteElement("CG", "triangle", 1)
 u = TrialFunction(V)
 v = TestFunction(V)
 
-forms = [(inner(grad(u), grad(v)) - f*v)*dx]
\ No newline at end of file
+forms = [(inner(grad(u), grad(v)) - f*v)*dx]
+exact_solution = g
+is_dirichlet = 1
+dirichlet_expression = g
diff --git a/test/poisson/dimension-grid-variations/poisson_2d_dg_quadrilateral.mini b/test/poisson/dimension-grid-variations/poisson_2d_dg_quadrilateral.mini
index 6f715e33e82dd4a8230b0cec1355e23ae0963466..cce6d681b76f031b3a239a04b7d3cb371bd99a85 100644
--- a/test/poisson/dimension-grid-variations/poisson_2d_dg_quadrilateral.mini
+++ b/test/poisson/dimension-grid-variations/poisson_2d_dg_quadrilateral.mini
@@ -8,6 +8,4 @@ name = {__name}
 extension = vtu
 
 [formcompiler]
-exact_solution_expression = g
-compare_dofs = 1e-1
 compare_l2errorsquared = 6e-7
diff --git a/test/poisson/dimension-grid-variations/poisson_2d_dg_quadrilateral.ufl b/test/poisson/dimension-grid-variations/poisson_2d_dg_quadrilateral.ufl
index 2ed2a867dbd34fe3e5d9dff0e8befe86536c6e8e..84019c1e87a0a368429d49a9c787344dc6bcdaf2 100644
--- a/test/poisson/dimension-grid-variations/poisson_2d_dg_quadrilateral.ufl
+++ b/test/poisson/dimension-grid-variations/poisson_2d_dg_quadrilateral.ufl
@@ -30,3 +30,4 @@ r = inner(grad(u), grad(v))*dx \
   - gamma*g*v*ds
 
 forms = [r]
+exact_solution = g
diff --git a/test/poisson/dimension-grid-variations/poisson_2d_dg_triangle.mini b/test/poisson/dimension-grid-variations/poisson_2d_dg_triangle.mini
index 8baa9181bf9c5f88dac387c4804b242559ea2bf6..ec7396c36a71a10e7ef2af2e192261c42b71736c 100644
--- a/test/poisson/dimension-grid-variations/poisson_2d_dg_triangle.mini
+++ b/test/poisson/dimension-grid-variations/poisson_2d_dg_triangle.mini
@@ -10,6 +10,4 @@ name = {__name}
 extension = vtu
 
 [formcompiler]
-exact_solution_expression = g
-compare_dofs = 1e-1
 compare_l2errorsquared = 5e-7
diff --git a/test/poisson/dimension-grid-variations/poisson_2d_dg_triangle.ufl b/test/poisson/dimension-grid-variations/poisson_2d_dg_triangle.ufl
index 58be5d1138590d6e561648d18c9ea487b052e911..d518b11815bc40279f08f2a8802f41c02d2f5703 100644
--- a/test/poisson/dimension-grid-variations/poisson_2d_dg_triangle.ufl
+++ b/test/poisson/dimension-grid-variations/poisson_2d_dg_triangle.ufl
@@ -29,3 +29,4 @@ r = inner(grad(u), grad(v))*dx \
   - gamma*g*v*ds
 
 forms = [r]
+exact_solution = g
diff --git a/test/poisson/dimension-grid-variations/poisson_3d_cg_hexahedron.mini b/test/poisson/dimension-grid-variations/poisson_3d_cg_hexahedron.mini
index ca5770a788bb233ed90f33466c5641469dbac5c2..1d4c4e9660cb9f285b3dc51db9c3c525181dd1ea 100644
--- a/test/poisson/dimension-grid-variations/poisson_3d_cg_hexahedron.mini
+++ b/test/poisson/dimension-grid-variations/poisson_3d_cg_hexahedron.mini
@@ -8,6 +8,4 @@ name = {__name}
 extension = vtu
 
 [formcompiler]
-exact_solution_expression = g
-compare_dofs = 1e-14
 compare_l2errorsquared = 9e-5
diff --git a/test/poisson/dimension-grid-variations/poisson_3d_cg_hexahedron.ufl b/test/poisson/dimension-grid-variations/poisson_3d_cg_hexahedron.ufl
index e9ff908ebe67d357db20509d42f03b46afd8d90a..93e880daec3964f358b303d02dcb45bca0314743 100644
--- a/test/poisson/dimension-grid-variations/poisson_3d_cg_hexahedron.ufl
+++ b/test/poisson/dimension-grid-variations/poisson_3d_cg_hexahedron.ufl
@@ -4,8 +4,11 @@ x = SpatialCoordinate(cell)
 f = -6.
 g = x[0]*x[0] + x[1]*x[1] + x[2]*x[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)) - f*v)*dx]
\ No newline at end of file
+forms = [(inner(grad(u), grad(v)) - f*v)*dx]
+exact_solution = g
+is_dirichlet = 1
+dirichlet_expression = g
diff --git a/test/poisson/dimension-grid-variations/poisson_3d_cg_tetrahedron.mini b/test/poisson/dimension-grid-variations/poisson_3d_cg_tetrahedron.mini
index 178cd983398e277fa30948937273de91342bfd85..6e6e4f674371172b3621bd1b4fba03c3c0ed0afd 100644
--- a/test/poisson/dimension-grid-variations/poisson_3d_cg_tetrahedron.mini
+++ b/test/poisson/dimension-grid-variations/poisson_3d_cg_tetrahedron.mini
@@ -10,6 +10,4 @@ name = {__name}
 extension = vtu
 
 [formcompiler]
-exact_solution_expression = g
-compare_dofs = 1e-14
 compare_l2errorsquared = 1e-4
diff --git a/test/poisson/dimension-grid-variations/poisson_3d_cg_tetrahedron.ufl b/test/poisson/dimension-grid-variations/poisson_3d_cg_tetrahedron.ufl
index 27ee0fd5d63f4398cf1a6d92f750f07634b73546..61ebabe881158548f770b69b999759285520439e 100644
--- a/test/poisson/dimension-grid-variations/poisson_3d_cg_tetrahedron.ufl
+++ b/test/poisson/dimension-grid-variations/poisson_3d_cg_tetrahedron.ufl
@@ -4,8 +4,11 @@ x = SpatialCoordinate(cell)
 f = -6.
 g = x[0]*x[0] + x[1]*x[1] + x[2]*x[2]
 
-V = FiniteElement("CG", "tetrahedron", 1, dirichlet_expression=g)
+V = FiniteElement("CG", "tetrahedron", 1)
 u = TrialFunction(V)
 v = TestFunction(V)
 
-forms = [(inner(grad(u), grad(v)) - f*v)*dx]
\ No newline at end of file
+forms = [(inner(grad(u), grad(v)) - f*v)*dx]
+exact_solution = g
+is_dirichlet = 1
+dirichlet_expression = g
diff --git a/test/poisson/dimension-grid-variations/poisson_3d_dg_hexahedron.mini b/test/poisson/dimension-grid-variations/poisson_3d_dg_hexahedron.mini
index a3eb3b37f697d3da5501c81164b72d54c4e052fc..1442988525b7b3080bcc0efd51e69ccca4e84f63 100644
--- a/test/poisson/dimension-grid-variations/poisson_3d_dg_hexahedron.mini
+++ b/test/poisson/dimension-grid-variations/poisson_3d_dg_hexahedron.mini
@@ -8,6 +8,4 @@ name = {__name}
 extension = vtu
 
 [formcompiler]
-exact_solution_expression = g
-compare_dofs = 1
 compare_l2errorsquared = 1e-4
diff --git a/test/poisson/dimension-grid-variations/poisson_3d_dg_hexahedron.ufl b/test/poisson/dimension-grid-variations/poisson_3d_dg_hexahedron.ufl
index 59b1d023c036c7e083cd0b24bfde9101247eeabc..8abb5fb0d42197f3b87f38389f222efafeccb30b 100644
--- a/test/poisson/dimension-grid-variations/poisson_3d_dg_hexahedron.ufl
+++ b/test/poisson/dimension-grid-variations/poisson_3d_dg_hexahedron.ufl
@@ -30,3 +30,4 @@ r = inner(grad(u), grad(v))*dx \
   - gamma*g*v*ds
 
 forms = [r]
+exact_solution = g
diff --git a/test/poisson/dimension-grid-variations/poisson_3d_dg_tetrahedron.mini b/test/poisson/dimension-grid-variations/poisson_3d_dg_tetrahedron.mini
index b885d1fe12cdd9841af0ec94046a152d9ca7f669..1a03b30ba4653e5cd5c4d8e82e6fb9e9bb040055 100644
--- a/test/poisson/dimension-grid-variations/poisson_3d_dg_tetrahedron.mini
+++ b/test/poisson/dimension-grid-variations/poisson_3d_dg_tetrahedron.mini
@@ -10,6 +10,4 @@ name = {__name}
 extension = vtu
 
 [formcompiler]
-exact_solution_expression = g
-compare_dofs = 1e-2
 compare_l2errorsquared = 3e-5
diff --git a/test/poisson/dimension-grid-variations/poisson_3d_dg_tetrahedron.ufl b/test/poisson/dimension-grid-variations/poisson_3d_dg_tetrahedron.ufl
index 9c4b4540c8d9154466342ad14d10dd9d2af74c86..384d582e45cd0d820e0d57ef40abb2d07ada88e2 100644
--- a/test/poisson/dimension-grid-variations/poisson_3d_dg_tetrahedron.ufl
+++ b/test/poisson/dimension-grid-variations/poisson_3d_dg_tetrahedron.ufl
@@ -29,3 +29,4 @@ r = inner(grad(u), grad(v))*dx \
   - gamma*g*v*ds
 
 forms = [r]
+exact_solution = g