osaliselt refactoreeritud. libraryd on segamini läinud