diff --git a/test/io_tests.jl b/test/io_tests.jl
index de75781afc8f997b64f75fec715c6d677ae26ce2..214e54921881f4be1d00cd51a2266c9a6aa3daa1 100644
--- a/test/io_tests.jl
+++ b/test/io_tests.jl
@@ -4,11 +4,7 @@
 ###
 
 @testset "Model configuration" begin
-    settings = Ps.getsettings(TESTPARAMETERS)
-    properties = Dict{Symbol,Any}(:settings=>settings)
-    space = GridSpace((10,10), periodic=false)
-    model = SimulationModel(Animal, space, properties=properties, warn=false)
-
+    model = inittestmodel()
     @test @param(core.configfile) == basename(TESTPARAMETERS)
     @test @param(core.startdate) == Date(2022, 2, 1)
     @test @param(core.loglevel) == "warn"
@@ -76,11 +72,11 @@ end
     model2 = loadmodelobject(joinpath(@param(core.outdir), "test.dat"))
     @test model.date == model2.date
     @test model.settings == model2.settings
-    @test length(model.agents) == length(model2.agents)
+    @test Ps.nagents(model) == Ps.nagents(model2)
     simulate!(Ps.withtestlogger(model))
     simulate!(Ps.withtestlogger(model2))
     @test model.date == model2.date
-    @test length(model.agents) == length(model2.agents)
+    @test Ps.nagents(model) == Ps.nagents(model2)
     rm(@param(core.outdir), force=true, recursive=true)
     @param(core.enddate) = originalenddate
 end
diff --git a/test/landscape_tests.jl b/test/landscape_tests.jl
index 3a29f872a27dea2af4b5c60b662692dbd1caeae3..10bd212907286e3ffd36330eaf4b77595ce5dbcc 100644
--- a/test/landscape_tests.jl
+++ b/test/landscape_tests.jl
@@ -16,7 +16,7 @@
     @test Ps.landcover((1100,1100), model) == Ps.builtup
     @test Ps.averagefieldsize(model) == 5.37
     @test count(f -> ismissing(f.fieldid), model.landscape) == 1685573
-    @test length(Ps.farmplot((800,800), model).pixels) == 4049                
+    @test length(Ps.farmplot((800,800), model).pixels) == 4049               
 end
 
 @testset "Event system" begin
@@ -42,6 +42,11 @@ end
 
 @testset "Landscape functions" begin
     model = inittestmodel()
+    @test Ps.directionto((2,3), model, Ps.agriculture) == (0,0)
+    @test Ps.directionto((2,3), model, Ps.forest) == (-1,2)
+    @test Ps.directionto((2,3), model, Ps.grass) == (1,2)
+    @test Ps.directionto((2,3), model, Ps.water) == (4,1)
+    @test Ps.directionto((2,3), model, Ps.soil) == nothing
     @test Ps.distanceto((2,3), model, Ps.agriculture) == 0
     @test Ps.distanceto((2,3), model, Ps.forest) == 2
     @test Ps.distanceto((2,3), model, Ps.grass) == 2
diff --git a/test/runtests.jl b/test/runtests.jl
index c761eeb1b3f79f7424d5f4c9ca8fc9dbcd6a8f1e..db4870c5988f9975de6266b066315f23c82bf33a 100644
--- a/test/runtests.jl
+++ b/test/runtests.jl
@@ -39,20 +39,20 @@ function inittestmodel(smallmap=true)
                              TESTSETTINGS["core.enddate"])
     crops = Ps.readcropparameters(TESTSETTINGS["crop.cropfile"],
                                   TESTSETTINGS["crop.growthfile"])
-    model = SimulationModel(TESTSETTINGS,
-                            StableRNG(TESTSETTINGS["core.seed"]),
-                            global_logger(),
-                            Vector{DataOutput}(),
-                            Dict{String, DataFrame}(),
-                            TESTSETTINGS["core.startdate"],
-                            landscape,
-                            weather,
-                            crops,
-                            Vector{Farmer}(),
-                            Vector{FarmPlot}(),
-                            Vector{Union{Animals,Nothing}}(),
-                            Vector{Pair{Animal, Date}}(),
-                            Vector{FarmEvent}())
+    model = AgricultureModel(TESTSETTINGS,
+                             StableRNG(TESTSETTINGS["core.seed"]),
+                             global_logger(),
+                             Vector{DataOutput}(),
+                             Dict{String, DataFrame}(),
+                             TESTSETTINGS["core.startdate"],
+                             landscape,
+                             weather,
+                             crops,
+                             Vector{Farmer}(),
+                             Vector{FarmPlot}(),
+                             Vector{Union{Animal,Nothing}}(),
+                             Vector{Pair{Animal, Date}}(),
+                             Vector{FarmEvent}())
     model
 end    
 
@@ -78,10 +78,10 @@ function smalltestlandscape()
                 (x in (1:2)) ? lc = Ps.forest :
                 (y == 8) ? lc = Ps.builtup :
                 lc = Ps.grass
-            landscape[x,y] = Pixel(lc, missing, [])
+            landscape[x,y] = Pixel(lc, missing, [], [])
         end
     end
-    landscape[6,4] = Pixel(Ps.water, 0, [])
+    landscape[6,4] = Pixel(Ps.water, 0, [], [])
     landscape
 end
 
diff --git a/test/simulation_tests.jl b/test/simulation_tests.jl
index 51de43adf8f8d5a05e7486c2b85e4a6693c84bb0..5b4b42e1ae0b56ab53b7909445fa9cd373a5e301 100644
--- a/test/simulation_tests.jl
+++ b/test/simulation_tests.jl
@@ -12,7 +12,7 @@
     @test typeof(model.logger) == TeeLogger{Tuple{ConsoleLogger, ConsoleLogger}}
     @test length(model.dataoutputs) == 2
     @test model.events == Vector{FarmEvent}()
-    @test nagents(model) == 2092+10+28
+    @test Ps.nagents(model) == 2092+10+28 #FIXME 2412 == 2130
 end
 
 @testset "Parameter scanning" begin
@@ -48,8 +48,7 @@ end
     rand1 = rand()
     Random.seed!(1)
     model = initialise(TESTPARAMETERS, 218)
-    #XXX upstream problem with ArgParse (https://github.com/carlobaldassi/ArgParse.jl/issues/121) - should work again with Julia 1.10
-    @test_broken rand() == rand1 
+    @test rand() == rand1 
     Random.seed!(1)
     @test @param(core.seed) == 218
     @test_logs((:info, "Simulating day 2022-02-01."),