Add documentation
Tweak types
Remove unnecessary inlines
Add a array data type comparison