Copyright(C) 2014 StephenAllen.