refactored your api to use modern obj-c features