added toString, added hasLength