rewrite

new outline, new philosophy
wait
update outline
again
Merge pull request #49 from awacs/master

new update, 3rd rewrite~!