Clean up
Simplify object model
Add callback option