introduced generic free structure + moved everything