but maybe a gen_server would be better than a special process