optimize structrue