some cleanup
some modification