<< content Chapter 2
Introduction to the universal prediction algorithm
In prior art, investigators have to use a specific fixed algorithm to predict a specific situation. There are algorithms written to predict what kind of job a kid will grow up to have, there are algorithms to predict how a herd of cows will migrate, there are algorithms to predict the behavior of gangs, there are algorithms to predict what banks will be robbed in the future and so forth. If anyone watches CSI or NUMBERS, the investigators use fixed algorithms all the time to predict future events. The universal prediction algorithm is one united software program that can predict any future or past event based on the preferences from a user. The user simply has to type in what event/object/action he/she wants to predict and the software program will output the prediction. For example, if the user wanted to know the outcome of a football game, the software program has to output the final score of the football game. In fact, the software has to go into the details and describe every single linear gameplay of the football game.
Although the universal prediction algorithm was designed to predict the future, it can also be used to predict the past. For simplicity purposes, the majority of this patent application will be devoted to predicting the future. I will be using football as an example to demonstrate how the universal prediction algorithm predicts the future.
The universal prediction algorithm is different from other current prediction algorithms because its goal is to predict the ďexactĒ future and not a probability of the future. Letís take football as an example. If you look at every single gameplay, all the players are positioned exactly the same way (the receivers, linebacker and quarterback are all positioned in the same areas). However, as the game is played, all players move differently. The QB can throw the ball to the receiver or pass it to the runningback or run the ball himself. The judgments of action are based on the brains of each player.
Also, the actions of one player affect the actions of another player in the game. Thus, in order to predict one playersí future actions, all other dependable playersí future actions must also be predicted. For example if a defensive player sees an offensive receiver wide opened, he will run towards his direction. On the other hand, the offensive receiver will try to run away from the defensive player. The defensive player relies on the actions of the offensive receiver and vice versa.
The universal prediction algorithm is interested in predicting the exact future of what will happen in a football gameplay. It wants to know what all players in the game will be doing (including the fans, coaches and referees). Every single atom must be predicted in the future in order to predict how a football game will end. A blade of grass is important because it might cause the QB to trip and fall to the ground. A hydrogen atom might hit an oxygen atom and cause a chain reaction, producing a gust of wind that changes the direction of the football. Because the gust of wind affected the football, the receiver was unable to catch the ball. Small objects like atoms, grass, wind and dust particles affect larger objects like human beings.
This problem is one of the reasons why it is soo difficult to predict the future. Future events are interconnected like a spiderweb. A future movement of one blade of grass in the field must be predicted, as well as, the future actions of the QB. If you think about all the permutations and combinations of ďallĒ objects involved in a football game, small or large objects, the amount will run exponentially.
It is the purpose of the universal prediction algorithm to solve this problem. Also, there is no doubt that a lot of work is needed to predict the future. The universal prediction algorithm has to predict the future in the most efficient and fastest time possible. If the user wants to know the outcome of a football game, the software program should output a result in 10 seconds. A football game last about 3-4 hours, so the software should do its job quickly. The future statistics from the universal prediction algorithm should be exact, or at least, similar to the results of the football game. For example, the linear gameplays are the same and the final score is the same.
If the universal prediction algorithm falls short of being accurate, it might still be able to predict a similar outcome. For example, the software programís predicted final score comes very close to the football gameís final score and there was a player that was injured in the 4th quarter of the game.
Itís not just the players that have to be predicted, the fans on the stand, the coaches, the referees, and the medical experts have to be predicted as well, in order to get an accurate prediction of the future. The QB might be on the field and a fan takes a picture, which causes the QB to be blinded momentarily. This event then causes him to miscalculate where the receiver is located and accidentally throws the ball to a defensive player.
My approach to predicting the future is to isolate and group independent predictions together and structure these independent predictions in a hierarchical manner. Human intelligence will be used to do the predictions, whereby important events are predicted first before minor events.
This patent application will continue on what I have been talking about from my previous 23 books and 21 patent applications. The reader should have a basic knowledge of my encapsulated inventions before reading further.
In order to predict the future quickly, robots working inside a computer are needed to do predictions. These robots are called virtual characters and they can work in any hierarchical team or organization to accomplish prediction tasks. In other words, human beings and robots in the real world canít be used to do predictions. The reason for this is because time in a computer is void and 20 years in a computer can be 1 second in the real world. The virtual characters inside a virtual world (the computer) can do work for 20 years, each having human level artificial intelligence. This method saves time. Some future prediction requires zillions of years in order to accomplish. Those zillions of years can be equivalent to several minutes in the real world. The computer basically fast forward events in the virtual world to save time (like a DVD player).
The overall data structure of the universal prediction algorithm
FIG. 1 is a diagram depicting the data structure of the universal prediction algorithm. There are primarily 4 parts to the UPA and they are: 1. prediction tree. 2. prediction internet. 3. signalless technology. 4. common knowledge container. There is a fifth part which is the AI time machine. I will describe the role of the fifth part when the other 4 parts are explained.
(1) Prediction tree
The prediction tree is one hierarchical tree containing non-exclusive predicted models. Each node in the prediction tree is called a predicted model. Each predicted model has upper and lower predicted models. Actually, the prediction tree can look like a combination of hierarchical trees and graphs with some of the predicted models having no parent or child nodes.
The purpose of the prediction tree is to break up objects in a prediction into the strongest groupings, hierarchically. For example the diagram in FIG. 1 shows the strongest hierarchical groups for the game of football. The user wants to predict what will happen in the future in terms of a football game. The universal prediction algorithm (UPA) will generate an initial hierarchical tree that will outline the important groups in the football game. Obviously human beings are important objects and needs to be predicted first. The quarterback and the receiver are important objects so they are grouped together. The quarterback and the runningback and the closest player are important objects so they are grouped together.
For the quarterback object, there are two important inner objects, which are: 1. the QBís brain. 2. the QBís physical body. Both objects are needed in order to understand how the QB will take action in the future. The brain will select an optimal pathway in memory and the body will follow the instructions from the optimal pathway to move.
The predicted models are non-exclusive, which means that objects used in one predicted model can overlap other predicted models. For example, the QB object was used multiple times in the prediction tree. Each predicted model has to also attach itself to higher or lower predicted models. Or it can gravitate towards a similar predicted model.
(2) Prediction internet
The prediction internet is a website that virtual characters go to to submit information about their predictions. Teams of virtual characters are either assigned to a predicted model or they choose to work on a predicted model. Each team should be specialized in certain areas in order to work on a predicted model. Sometimes, a hierarchical team or a business will work on branches of predicted models. The hierarchical team will assign different groups of virtual characters to specific predicted models in the branch tree.
In other cases, teams of virtual characters can team up with or have partnerships with other teams of virtual characters. FIG. 2 depicts a structure of multiple teams of virtual characters that work together to do work in branches of the prediction tree. TeamB is working on a branch of predicted models. TeamB is also in partnership with TeamA, TeamC and TeamD. They are all working together, inputting, deleting and modifying information into the prediction internet based on their predicted models (located in the dotted circle).
FIG. 3 is a diagram depicting the data structure of one predicted model. Parts of each predicted model includes primarily: focus objects, peripheral objects, software programs, and prediction outputs. The focus objects are objects that this predicted model is concerned with. In this diagram, the focus objects are the quarterback and the receiver. These are the two objects that the teams of virtual characters have to predict. The peripheral objects are the runningback, player closest to QB, coaches and fans. These are objects that have secondary importance. The virtual characters will concentrate on the focused objects and be aware of the peripheral objects when they have to do their predictions.
The virtual characters have to compare prediction information from its neighbor predicted models (parent and child nodes) and to use that information to come up with their own predictions.
The output of one given predicted model consists of limited predictions of what might happen in the future based on the focused objects. For example, if the focused objects for a predicted model are the QBís brain and right arm, the prediction output might be three possible arm movements in terms of how the QB will throw the ball. These three predictions are ranked in terms of how certain the virtual characters believe the QBís arm will move in the future.
The job of one predicted model is to limit the amount of future possibilities and information for parent predicted models to work with. FIG. 3 is a diagram depicting the chain of work needed to predict how the QB throws the ball to different players. In predicted modelB, the QB is examined and the conclusion is several pathways the QB will select to take action. Predicted modelB have two focused objects: QBís brain and physical action. In predicted modelC, virtual characters have determined what the QBís goals are and what he plans to do. The possibility rankings show predicted modelB that the QB will most like throw the ball to the left receiver. The second ranking shows he might check to the right to see if the right receiver is open. The third ranking shows he might change his mind and give the ball to any close by player.
Predicted modelD reveals what the QBís physical body will be like if a given intelligent pathway from the QBís brain was selected. If the QB was throwing the ball to the left receiver, this is what the future event will look like. If the QB was throwing the ball to the right receiver, this is what the future event will look like. The output of predicted modelD might be a simulated software that takes in input from a user and the simulation is about how the QBís physical body will move. For example, the input might be an intelligent pathway from the QBís brain and the output might be a simulation of how the QB will move because of the pathway.
The work from predicted modelD is to build a simulated software that will act as the physical shell of the QB. Regardless of what intelligent pathway is selected by predicted modelC, the simulated software should be able to show what the QBís physical body should look like in the future.
The job of predicted modelB is to take the limited possibilities and knowledge from predicted modelC and predicted modelD to merge the two information and to come up with its own limited possibilities and knowledge for parent nodes. For example, predicted modelB might determine that the QB will select a pathway from memory to throw the ball to the right receiver (from predicted modelC). The team will also use the best simulated software of the QBís physical body (from predicted modelD). They will process the separate data and they will output possible animations of the QB throwing the ball to the right receiver.
The information from predicted modelB will be analyzed by predicted modelA. Predicted modelA must manage three focused objects, which are:
They will look at the three possibilities and analyze all three data in a group to determine the most likely actions the QB will take in the future. For example, the virtual characters might analyze what all three data have in common in terms of what the universal goals of the QB are. All three predicted models might have the QB favoring throwing the ball to the left receiver than the right receiver or the runningback.
The job of the virtual characters working on predicted modelA is to organize the data from the lower levels, to process them and do further predictions.
The virtual characters can use any investigative tool that is necessary to process information. They can use software programs, hardware devices, computers, networks, the internet, the AI time machine, science books, science methods, pre-existing algorithms, investigation strategies and so forth. Each virtual character is smart at a human level and they are using knowledge and technology to do their predictions.
Like CSI, they can take pre-existing prediction algorithms proposed by respected scientists and use them to predict the future.
Each predicted model has to do predictions within their focused objects. They canít deviate from their focused objects. If every virtual character does their job properly, the root node (which is the entire football game) will have an optimal future prediction in terms of the collective whole of all hierarchically structured predicted models.
This method is used to manage complexity and to combine processed information in a meaningful manner.
(3) Signalless technology
The signalless technology is a network of cameras, human robots, and sensing devices that collect information from the environment in the fastest way possible. All atoms from the football game have to be identified as quickly as possible. The signalless technology will be able to map out every atom in the football field using artificial intelligence and input this information into the prediction internet to be processed.
To summarize the signalless technology, cameras and sensing devices are scattered throughout the football stadium and the AI time machine will process the streaming data to map out every atom in the football game. No sonar devices or x-rays are ever used. Only a sophisticated form of artificial intelligence is needed to track every atom, electron and em radiation from the football game.
The signalless technology will input data into the prediction internet so that all virtual characters participating in predicting the football game has access to the information as soon as they are processed. For example, every atom of the QB has to be mapped out so that predicted modelD (the example above) can use the information to build simulated software concerning the QBís physical body.
(4) Common knowledge container
Each virtual character working in the prediction internet has human level artificial intelligence. Their roles, boundaries, rules, power and status are all determined by common knowledge found in books and documents. The team of virtual characters is like a business, and each employee understand their roles and status through business school. The business will have their own laws that further define how employees should act and behave.
Below is a list of things that should be part of the common knowledge container:
1. Status, rules, power and objectives of each virtual character
2. Prediction methods and strategies for each virtual character
3. Each team submits which predicted model they are working on and their parent and child teams.
4. Ranking of teams, their team partners or hierarchical sub-teams
5. Recommended software to use for each predicted model
6. The information that should be outputted by each predicted model
7. The initial hierarchical tree for a given prediction.
1. Each virtual character must follow rules set forth in books and documents in terms of objectives, rules and power. For example, a captain of a team has different objectives and rules compared to a worker. Each virtual character has to know their part through common knowledge.
Also, each team has to be registered and have a license to predict by a government. This prevents people who are not skilled from doing predictions.
This knowledge provides a national law that each team of virtual characters has to follow to do predictions. In addition to this, each team also has their own written laws to follow.
2. Each virtual character must have gone through college to learn the latest techniques to predict the future. If a predicted model is about ocean currents, there are specific scientific methods to use in order to come up with predictions. College courses will give each virtual character the knowledge to do their predictions.
3. Each team of virtual characters have to register with the prediction internet and specify what predicted model they are working on and disclose any partners or hierarchical teams that they are working with.
Teams of virtual characters act like competing companies. They compete with each other to output more accurate predictions. In the common knowledge container, each team will be ranked in terms of how affective they are in their work. The better their prediction, the higher up they are ranked. Some teams are assigned to predicted models, while other teams choose to do work in predicted models. It is also possible to assign multiple independent teams to work on the same predicted model.
4. The prediction internet will have a website that ranks each team/virtual character. People can submit their reviews on how affective certain teams are. This ranking system facilitates competition.
5. There are many predictions made on events, objects and actions in the prediction internet. Virtual characters have written in books and documents what are the most effective software and procedures used for a particular predicted model. This information gives teams the recommended software and procedures to use in order to do their predictions.
Also, new software and standardized software are listed so that people can use the latest technology to do their predictions.
All recommended investigative tools are listed for teams to do work on a given predicted model. This includes: software programs, hardware devices, computers, networks, the internet, strategies, methods, information compilation and so forth.
6. The most important responsibility for a predicted model is to output the right information. The common knowledge container has a list of information that should be outputted for a given predicted model.
Outputs for predicted models come in different media types. One output might be generating animation possibilities, while another output might be a short report on possibilities. Since there are so many media types to output, the common knowledge container has a list of what each predicted model should output.
7. One of the jobs of the prediction internet is to take an event, object or action and provide an initial prediction tree. For example, if someone wanted to predict the future event of a football game, an automated software will analyze predictions in the prediction internet and provide an initial prediction tree. As work is done on the prediction tree, the branches of nodes will change (nodes will be added, deleted or modified). When adequate work has been done on the prediction tree, the nodes will be organized in an optimal manner.
The main purpose of the common knowledge container is to provide information to virtual characters and to coordinate the virtual characters so they can predict future events. As teams of virtual characters have more experience in doing predictions, they can tell other people what techniques are good and bad and what software are good and bad. By posting these data, other virtual characters will be informed about what techniques to use to predict the future.
(5) The final part of the universal prediction algorithm (UPA) includes using the AI time machine. This last part links all the other parts together into one cohesive software program.
The AI time machine (aka time machine) is a software program that assigns virtual character work to fixed software functions. There are two modes to the AI time machine: standard mode and training mode. In standard mode, users can use the AI time machine to do tasks; and in training mode, a dynamic robot has to physically do tasks and assign this task to fixed software functions in the AI time machine.
FIG. 4 is a diagram depicting one pathway from the AI time machine. The input is the data the user inserts into the program. The desired output is the information that is transmitted to the user (usually through the monitor). Teams of virtual character pathways, called a station pathway, are assigned between the input and the desired output.
When someone wants to use the AI time machine to predict the future (using standard mode), they can simply fill a form and the AI will automatically execute virtual character pathways and display the desire output for the user. In this case, the user wants to predict future events of a football game. The user will input information about the football game, such as team backgrounds, game cameras, team statistics and stadium configuration. The AI of the AI time machine will provide a desired output in the fastest time possible.
The user can also specify what the desired output can be. He might want to know the final score or the linear gameplay of the football game through a short video.
A dynamic robot is needed in order to train the AI time machine to do predictions (at this point, the AI time machine is in training mode). An adequate amount of training is needed in order for the AI time machine to predict the future.
The purpose of the AI time machine is to encapsulate work. The robots are doing work, storing that work into the AI time machine and reusing that work in the future by accessing the AI time machine.
Patent application serial no. 12/110,313 describes the technology in detail. Here is a summary of the technology: A robot has a built in virtual world which serves as a 6th sense (FIG. 5). The robot can choose to enter the virtual world whenever and wherever it chooses. Usually, the robot defines a problem to solve and understand the facts related to the problem. Then it will transport itself into the virtual world as a digital copy of itself (similar to the matrix movie). The digital copy will be called ďthe robotĒ and the intelligence of the robot will be referencing pathways in the robot in the real world. In the virtual world is an AI time machine, which consists of a videogame environment that emulates the real world. All objects, physics laws, chemical reactions and computer software/hardware are emulated perfectly inside the AI time machine. The job of the robot is to manipulate the AI time machine to search and extract specific information from virtual characters.
The robot will set the environment of the AI time machine depending on the problem it wants to solve. For example, if the robot wanted to do a math homework, it has to create an appropriate setting to solve math equations. In the AI time machine the robot has to create a comfortable room void of any noise, the math book the homework is located, several reference math books, a notebook, a pencil, a computer, a chair and a calculator. Once the setting of the environment is created, the robot will copy itself again into the AI time machine, designated as ďthe virtual characterĒ. The virtual character is another digital copy of the robot and the intelligence is referencing the same pathways in the brain of the robot located in the real world. Once the virtual character is comfortable in the AI time machine environment it can start doing ďworkĒ. In this case, it consciously chooses to do a math homework. It will spend 2 weeks doing the math homework. After it is finished, the virtual character will send a signal to the robot in the virtual world that it has accomplished the task. The robot will then take the math homework and store that information as a digital file in his home computer. Then the robot will exit the virtual world and transport itself into the real world where it will apply the information it has extracted from the AI time machine.
At this point, some people might ask: why is the AI time machine encased in the virtual world? Why not simply have one virtual world? The reason is that the robot has to set the environment of the AI time machine so that the virtual characters can do their job. Another reason is that the virtual characters have to have goals that they want to accomplish the moment they are in the AI time machine. The robot is also responsible for searching and extracting information from the virtual characters.
The robot in the virtual world can actually make as many copies of itself as needed to solve a problem. It can create a team of itself to solve a problem, each copy referencing the pathways in the brain of the robot located in the real world. The problem that the team of virtual characters want to solve might be large, for example, they might want to cure cancer. They will work together to get things done by dividing the work load and structuring the virtual characters into a hierarchical manner. The team will be like a company, whereby each member of the company will have their own jobs to do and they will all work together to achieve the goals of the company. These virtual characters are no exception because they will work together in a team like setting, dividing tasks among each other and accomplishing goals.
Since it can create hundreds of copies of itself, it has to maintain the activities of the virtual characters. Some virtual characters might have better solutions than other virtual characters or some virtual characters might be doing the wrong things. Itís up to the robot to coordinate their activities. Another method is to create coordinators and put them into the AI time machine to manage all the virtual characters.
All virtual characters are simply referencing the pathways from the robotís brain in the real world. They arenít clones of the real robot, thus their work is considered the work of one entity: the robot in the real world. The digital image of the virtual character is only a shell and doesnít have a digital brain. Therefore, it isnít alive.
In addition to the many copies of the robot (robotA) in the AI time machine, there are pre-existing virtual characters from other robots also co-exiting in the same AI time machine dimension. They can also help in accomplishing tasks.
A closer look at the AI time machineís two modes
The AI time machine has two modes: training mode and standard mode. In training mode, dynamic robots are needed to train the AI time machine. The steps include: at least one dynamic robot, copies itself into a virtual world as a robot, sets the videogame environment of the AI time machine based on at least one task, copies itself into an AI time machine world as at least one virtual character using investigative tools and the signalless technology to do work The robot, operating in the virtual world, assigns fixed interface functions from the AI time machine and linear inputs, while the virtual characters, operating in the AI time machine world, do work to submit desired outputs to the robot.
A software program can observe and analyze the universal brain to automatically assign fixed interface functions from the AI time machine to repetitive work done by at least one virtual character.
In standard mode, at least one user will submit sequential tasks through fixed interface functions and the AI time machine will output simultaneous or linear desired outputs. The work needed to generate the desired outputs in standard mode includes at least one of the following:
1. the AI time machine extracts virtual character pathways from the universal brain and tricks the virtual character pathways in a virtual world to do automated work;
2. real virtual characters, structured hierarchically, are using investigative tools and the signalless technology to do manual work.
Fixed interface functions for the AI time machine are at least one of the following: software interface functions, voice commands, a camera system to detect objects, events, and actions, and manual hardware controls.
In training mode, virtual characters are structured hierarchically and they work together in a team like organization to do at least one of the following:
1. a captain analyzes at least one user and the userís inputs and understands the userís goals, intentions and powers based on human intelligence, manages tasks for the user, accomplish tasks, give tasks to lower level workers, and submit desired outputs to the user.
2. each virtual character understand their roles, rules, powers, status, limitations and procedures based on common knowledge learned in college, books or legal documents.
3. each virtual character does work using investigative tools and a signalless technology.
4. the captain understands the userís roles, rules, powers, status, limitations and procedures based on common knowledge learned in college, books or legal documents.
5. virtual characters can use investigative tools to predict the future and act based on the best future possibility.
A note to the reader: I will be presenting examples on both individual input/desired output and sequential inputs/desired outputs. Extremely complex individual tasks have to be trained first in the AI time machine. Sequential tasks require a captain (a virtual character) to manage multiple tasks and give orders to execute tasks. The example used in the football game (below) is an individual input/desired output. Later on, I will give examples of sequential inputs/desired outputs.
I will give an example of how the AI time machine is trained to predict the future events of a football game. In training mode, the robot is transported into the virtual world. The robot has to trick a pathway by setting up the input and desired output. He will pretend to access interface functions (the input) from the AI time machine. The input consists of pretending to input information into a form and submitting it. Next, the robot will make a copy of itself inside the AI time machine as a virtual character. The virtual character is responsible for doing all the work to predict the football game (FIG. 4).
The virtual character/s can use a trinity of technologies (including the AI time machine) to do work. He can also request a group of other virtual characters to do work.
In this example, the virtual character uses a software program to generate an initial prediction tree for the football game. Next, the virtual character uses the autonomous prediction internet to predict the future. Finally, when the predictions are made, the virtual character is responsible for extracting specific data from the autonomous prediction internet and processing and outputting that information to the robot in the virtual world. The format of the desired output is specified by the robot (the user) in the input. The robot might want to see a short summary of the game, highlighting the most exciting parts. The virtual character will be the one to take information from the prediction internet and to convert that data into a presentable format. In this case, the desired output specified by the robot (the user) is a short video.
In the first step, the virtual character can actually use the AI time machine to do the complex work of generating a prediction tree for the football game. In the second step, the virtual character has to access the autonomous prediction internet, whereby teams of virtual characters will work together to predict future events of the football game. These teams of virtual characters have to input, delete and modify predictions in the prediction internet. When the autonomous prediction internet is done and the final results are presented on their website, the virtual character will extract data that he thinks is important. Finally, during the last step, the virtual character has to convert the data extracted into a meaningful and presentable manner. The input by the user specifies that he wants to see a video summary of the game. The virtual character will analyze the data extracted from the autonomous prediction internet and determine the exciting parts of the football game. He will take videos made for the football game by predictors and string them together into one video. This short video will be the desired output submitted to the robot (the user) in the virtual world.
This football example is only one training for the AI time machine. If the AI time machine was trained with millions of football game examples, the pathways will self-organize and create universal pathways that can predict the future outcome of ďanyĒ football game. The user that is accessing the AI time machine in standard mode can predict any football game that he wants.
Universal prediction algorithm
The reason why I call the technology the universal prediction algorithm is because the AI time machine can predict any event, object or action. There are no limits as to what it can and canít do. This technology can predict the future events of a football game, a basketball game, the stock market, the weather, human beings, animals, news events and so forth.
In FIG. 6, the diagram depicts the self-organizing of predictions. Football predictions will be stored close to similar sports such as soccer or basketball. Notice that baseball is farther away from football than soccer. The reason why is because soccer is more similar to football than baseball. Within the prediction tree for soccer and the prediction tree for football, they share commonalities.
If the AI time machine is trained with various sports such as: football, baseball, basketball, polo, volleyball, hockey, baseball and soccer, the pathways in memory self-organizes into universal pathways. This allows the AI time machine to predict ďanyĒ sport. Even made up sports that donít exist can be predicted. Even sports that have their rules completely changed can be predicted. The universal sports pathway has adapting aspects that can predict future events for ďanyĒ sport (FIG. 7).
A commonality between predictions
The diagram in FIG. 8 shows that despite the differences between a football player and a soccer player, there are predicted models that share similarities. For the soccer player, his lower levels consist of brain and physical body. For the football player, his lower levels consist of the exact predicted model, brain and physical body. This example shows that when predictions are made between two human beings, their prediction methods are similar.
Copyright 2007 (All rights reserved)