protected static function arguments($table)
	{
		// get the list of columns from the table
		try
		{
			$columns = \DB::list_columns(trim($table), null, \Cli::option('db', null));
		}
		catch (\Exception $e)
		{
			\Cli::write($e->getMessage(), 'red');
			exit();
		}

		// construct the arguments list, starting with the table name
		$arguments = array($table);

		// set some switches
		$include_timestamps = false;
		$timestamp_is_int = true;

		// process the columns found
		foreach ($columns as $column)
		{
			// do we have a data_type defined? If not, use the generic type
			isset($column['data_type']) or $column['data_type'] = $column['type'];

			// skip the 'id' column, it will be added automatically
			if ($column['name'] == 'id')
			{
				continue;
			}

			// detect timestamp columns
			if (in_array($column['name'], array('created_at', 'updated_at')))
			{
				$include_timestamps = true;
				$timestamp_is_int = $column['data_type'] == 'int';
				continue;
			}

			// do we need to add constraints?
			$constraint = '';
			foreach (array('length', 'character_maximum_length', 'display') as $idx)
			{
				// check if we have such a column, and filter out some default values
				if (isset($column[$idx]) and ! in_array($column[$idx], array('65535', '4294967295')))
				{
					$constraint = '['.$column[$idx].']';
					break;
				}
			}
			// if it's an enum column, list the available options
			if (in_array($column['data_type'], array('set', 'enum')))
			{
					$constraint = '['.implode(',', $column['options']).']';
			}

			// store the column in the argument list
			$arguments[] = $column['name'].':'.$column['data_type'].$constraint;
		}

		// set the switches for the code generation
		\Cli::set_option('no-timestamp', $include_timestamps === false);
		\Cli::set_option('mysql-timestamp', $timestamp_is_int === false);

		// return the generated argument list
		return $arguments;
	}