   
   defmodule FibServer do
     def work(parent) do
-      send(parent, {:ready, self})
+      send(parent, {:ready, self()})
       receive do
         {:compute_fibonacci, n} ->
           send(parent, {:answer, n, compute_fibonacci(n)})

    def map(collection, function) do
      # Re Exercise: WorkingWithMultipleProcesses-6
      # we save the parent as we could not get it from inside the child fn call
      parent = self
      
      collection
      |> Enum.map(fn (item) ->
        # this returns the pid
        spawn_link fn -> send(parent, {self, function.(item)}) end
      end)
      |> Enum.map(fn (pid) ->
        receive do

    
    def create_processes(n) do
      # a somewhat confusing (to me) way to create a chain - but anyway
      last = Enum.reduce 1..n, self(), fn (_, send_to) -> spawn(Chain, :counter, [send_to]) end
      send last, 0
      receive do
        msg ->
