add freeable trait