Temp commit before change the implementation of distribution.
Stable version.
Now supporting profile and sparse operations.