updated
respond function now expects callback to return an object