Reogranize and rename classes

Fix #201
Fix #202
Fix #203