public Action(String proto) throws Exception {
		this.prototype = proto;
		this.modelBuilder = new ModelBuilder(proto);
		this.actionNumMap = new HashMap<String, Double>();
		
		// We don't really need the dataset for prediction,
		// just use it to get the connection between 
		// action and their values.
		DatasetBuilder builder = new DatasetBuilder(this.prototype);
		Instances dataset = builder.getDataset(StringUtil.ACTION_TYPE);
        Attribute actionType = dataset.attribute(StringUtil.ACTION_TYPE);
        
        actionNumMap.put("dash", (double) actionType.indexOfValue("dash"));
        actionNumMap.put("kick", (double) actionType.indexOfValue("kick"));
        actionNumMap.put("turn", (double) actionType.indexOfValue("turn"));
        actionNumMap.put("catch", (double) actionType.indexOfValue("catch"));
        // Won't consider turn-neck for now
        //map.put("turn-neck", (double) actionType.indexOfValue("turn-neck"));
		
		// Get actionType model.
		actionTypeCls = modelBuilder.getModel(StringUtil.ACTION_TYPE);
		if (actionNumMap.get("dash") != -1)
			dashPowerCls =  modelBuilder.getModel(StringUtil.DASH_POWER);
		if (actionNumMap.get("kick") != -1) {
			kickPowerCls =  modelBuilder.getModel(StringUtil.KICK_POWER);
			kickAngleCls =  modelBuilder.getModel(StringUtil.KICK_ANGLE);
		}
		if (actionNumMap.get("turn") != -1)
			turnAngleCls =  modelBuilder.getModel(StringUtil.TURN_ANGLE);
		if (actionNumMap.get("catch") != -1)
			catchAngleCls =  modelBuilder.getModel(StringUtil.CATCH_ANGLE);
	}