My first open source project. The code is ugly.