     # run it in a separate process
     pid = spawn(Computator, :double, [])
     # send a message with the number we want to double
-    send pid, {self, 10}
+    send pid, {self(), 10}
     # wait for the spawned process to send something back to us
     receive do
       {:ok, outcome} ->

    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

  defmodule Scheduler do
    def run(number_of_processes, module, function, input) do
      (1..number_of_processes)
      |> Enum.map(fn(_index) -> spawn_link(module, function, [self()]) end)
      |> schedule_work(input)
    end
    
