update elixir version
Using structs for improved clarity

Also defining the branching factor as module variable, since it would not be possible
to handle different branching factors across all operations.