A reliable way to make a brick tower I have been trying to make a brick tower, but the method I'm using doesn't seems too reliable.

This is the method I'm using:


Move the brick origin to the center, followed by an empty object/array to rotate it.
Make another empty object for the second array (tower height) and rotate it so it mixes the bricks a bit.


The problem with this method is that I need to do lots of tinkering, since I need to rotate the second array to mix the bricks, then move the second empty object to try to get the tower "straight".
As you can see in the picture, the tower is not perfectly straight. Is there a better way to do it?
Instead of two empties use one curve and an empty as follows :


add a curve circle
add  Array modifier with some offset ( 1.05) and set it to fit curve
add a curve modifier and set to use the curve circle
add Array modifier with the empty as an offset object
this is the setup now :




and the modifiers ( on the brick ) :



the result and manipulation :

all object should be at the origin, sclale the curve to change the diamater , and rotate the empty to create the rotation offset





update : for any wall shape : 


add a stack of 3 array modifiers and one curve modifier as follows  :




You control the length and shape of the wall using the curve :