implement dynamic string struct