some mistakes seem to be corrected, but steel needs debug