package {
	internal class Shape {
		/**
		 * Tetrad shape I.
		 */
		internal static var I:Shape = new Shape( "I" );
		/**
		 * Tetrad shape O.
		 */
		internal static var O:Shape = new Shape( "O" );
		/**
		 * Tetrad shape T.
		 */
		internal static var T:Shape = new Shape( "T" );
		/**
		 * Tetrad shape Z.
		 */
		internal static var Z:Shape = new Shape( "Z" );
		/**
		 * Tetrad shape S.
		 */
		internal static var S:Shape = new Shape( "S" );
		/**
		 * Tetrad shape L.
		 */
		internal static var L:Shape = new Shape( "L" );
		/**
		 * Tetrad shape F.
		 */
		internal static var F:Shape = new Shape( "F" );
		/**
		 * Indicates the tetrad that is currently falling.
		 */
		internal static var CURRENT:Shape = new Shape( "CURRENT" );
		/**
		 * Indicates the cell is empty.
		 */
		internal static var CLEAR:Shape = new Shape( "CLEAR" );
		/**
		 * Indicates the cell is out of bounds.
		 */
		internal static var OUT:Shape = new Shape( "OUT" );
		/**
		 * The string representation of te cell state.
		 */
		internal var label:String;
		/**
		 * The constructor.
		 * 
		 * @param l the label for this shape
		 */
		public function Shape( l:String )
		{
			label = l;
		}
	}
}