Refactored to remove unncessary callback handler
This is now a full implementation - it just doesn't work yet :-)