@Override
	public List<T> next() {
		List<T> next;
		if(items.size() == 1) {
			next = new ArrayList<T>();
			next.add(self.next());
			return next;
		}
		while(true) {
			if(current == null) {
			current = self.next();
			List<T> temp = new ArrayList<T>(items);
			temp.remove(current);
				iter = new Permutor<T>(temp);
			}
			if(!iter.hasNext()) {
				current = null;
				continue;
			}
			next = iter.next();
			next.add(0,current);
			return next;
			}
	}