Reorganize code into smaller chunks.
Add documentation.
Update meta data.
Add testing framework.