Final version. All the necessary functionality has been implemented.