Copyright (c) 2012 @tercel_s, @iTercel, @pi_cro_s.