Basic functionality

This doesn't acually work since generic destructors are still broken :(
rust-lang/rust#15905