lots of copying, editing, and refactoring
did some stuffs