Changed the internal implementation