cleanup and redesign