iOS refactored