this out parameter should be a pointer