new dispose method (#353)

based on a clean branch...