Abstract library