Tidied to use GenServer.call