First complete version. Progress tracking still to be added