abstract library