erlang/03 switching to gen_server + supervisor