Redesigned the whole library