Added equality testing and added a catchall constructor.