Code at time of presentation, still need to improve + cleanup code