Fixed up flaws in the interface, and the implementation

- Fixed up bug with destroying data
- Fixed up race condition in test
- Fixed up unneeded closure passing in the interface