working callback
full support for callback. need to move into worker eventually