synchronized void doneWork() {
		boolean doneTicking = true;
		if (timer.isRunning) doneTicking = false;
		for (TickThread thread : this.threadPool) {
			if (thread.isWorking) doneTicking = false;
		}
		if (!doneTicking) {
			try {
				wait();
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		} else {
			synchronized(listRemove) {
				for (ITickable tick : this.listRemove) {
					this.listDone.remove(tick);
				}
			}
			synchronized(listAdd) {
				for (ITickable tick : this.listAdd) {
					if (tick != null)
						this.listDone.add(tick);
				}
			}
			listRemove.clear();
			listAdd.clear();
			
			listWork.clear();
			synchronized(listDone) {
				for (ITickable tick : this.listDone) {
					this.listWork.add(tick);
				}
			}
			
			listDone.clear();
			
			notifyAll();
		}
	}