redesign the part of `Library`