seperate object APIs
a demo of callback hell