Why is this typedef needed?