modern obj-c refactor