cleanup and updated