push verbose trivial methods to internal category
clean up and add array-like interface
Fix for low version SDK
rewrite some code based on FoundationExtension