Agents.jl: Establishing a new space type

Not really a beginner. I have been practising Julia for a while and gone over couple of decent books. We actually discussed this coding style once (passing types rather than using type parameters).

Then, I might be confused by the documentation, e.g.

space = GridSpaceSingle((10, 10); periodic = false)
... 
@agent SchellingAgent GridAgent{2} begin
    mood::Bool # whether the agent is happy in its position. (true = happy)
    group::Int # The group of the agent, determines mood as it interacts with neighbors
end 
...
schelling = ABM(SchellingAgent, space; properties)

The first argument (SchellingAgent) is a type.
The argument space looks like instance of a SpaceType.