Draft of source code.
Draft for building.
Draft of unit test.
Update.
Update git ignore file.
Update unit test.
Update.