A lot of changes.
Fix #1.