completed, still with some errors