following structure recommended by Go language Website