final program version + test schema