Added some documentation. Improved code usability. Removed inconsistent methods. Used a set to store tags