restructure and commenting