add set_data() + rmv mem leaks