New abstract and small changes.
Efficiency.