diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0c9a7cd094c07fcad6550c96e17931883bb6254c..9c0261529f1f3b3dab348f74adffff2252e0521f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -8,9 +8,21 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 
 ## [v0.5.0] - unreleased
 
+This release doesn't add much new functionality, but represents a major restructuring 
+of the code base. Specifically, it removes the Agents.jl dependency and changes the 
+way the species definition macros work and are used.
+
 ### Added
 
-- `SimulationModel` struct
+- `SimulationModel` type, extended by `AgricultureModel` struct
+
+- `@create` macro defines a special phase function that is called when an individual
+  animal is created (at birth or on model initialisation)
+  
+- functions to replace Agents.jl functionality:
+  - `move!()` and `walk!()` 
+  - `nearby_ids()`, `nearby_animals()`, `neighbours()`
+  - `directionto()`, `distanceto()`, `randomdirection()`
 
 - large logo and model structure diagram
 
@@ -20,12 +32,22 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 
 - `SimulationModel` replaces `AgentBasedModel`
 
+- Species definition macros revamped:
+  - `@species` now only defines parameters and variables and creates a mutable struct
+  - `@phase` must now be defined in the top-level code and creates a global function
+  - `@initialise` renamed to `@populate`, must also be called in the top-level code
+  - `initindividual()` renamed to `create!()`
+  
+- Skylark, Wolpertinger, and Wyvern updated to match the new macros
+
 ### Deprecated
 
 ### Removed
 
 - Agents.jl dependency (including `AgentBasedModel` and functions for adding/moving/removing agents)
 
+- `countanimals()` and `@countanimals()`
+
 ### Fixed
 
 
@@ -74,7 +96,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 
 <!-- Template
 
-## [Unreleased]
+## [Unreleased] - <date>
+
+<comments>
 
 ### Added