The library API is designed in the way to be easily extendable to support possible future features (e.g. splitting or joining partitions). This is the reason why some parts of the interface are designed in more complex way than it is actually necessary. The design of the library API also allows to append new filesystem types with their own filesystem-specific parameters.