Programming Ideas For Libraries