gen_server with supervisor