public void remove(int index) {
		if(first == -1 || last == -1 || index > size) {
			return;
		}
		if( first == last) {
			if(first != index ) {
				return; // actually an error
			} else {
				first = -1;
				last = -1;
			}
		} else if( first == index) {
			first = ((Node)v.get(index)).next;
		} else {
			NodeAndPlace nodeAndPlace = (NodeAndPlace)getNodeAndPlace(index - 1);
			Node n = nodeAndPlace.node;
			Node nextNode = (Node)v.get(n.next);
			n.next = nextNode.next;
			if( index == last) {
				last = nodeAndPlace.place;
			}
		}
		size -= 1;
		v.set(index,  null);
		
	}