public function is_valid($mark_as_used=true) {
	if (!empty($this->data['used'])) {
		return false;
	}
	if (time() > $this->data['expire_at']) {
		return false;
	}
	
	if ($mark_as_used) {
		$this->mark_as_used();
	}
	
	return true;
}