lots of work, still many errors