instead of trying to make void work as a data type declaration, it might be clearer to accept an empty struct.