modified structure according to go documentation