Core generalization
Refactor API (make common)