As the number of abstraction is increasing, it is valuable to separate "base" abstractions to programs specific ones.