complete 18, code needs clean up