http://www.javacodegeeks.com/2012/08/single-writer-principle.html