Copyright(C) Karl-Johan Arvidsson, 2005-2011.