library interface