Technically done. Heavy refactor needed.