18th revision
Unit tests added