public boolean initialize(ArrayList<String> in) {
        assert (in != null) : "Cannot initialize with a null list";
        assert (tokens == null) : "Cannot reinitialize EnglishNumber";
        assert (in.size() != 0) : "Cannot accept an empty arraylist";
        
        if (in == null)
        {
        	em.error("Cannot initialize a null list");
        	return false;
        }
        
        if (tokens != null){
        	em.error("Cannot reinitialize EnglishNumber");
        	return false;
        }
        
        if (in.size() == 0){
            em.error("No tokens to parse.");
            return false;
        }
        
        // Tokenize input
        tokens = toTokens(in);
        if (tokens == null){
            return false;
        }
        position = 0;
        
        // Parse
        boolean result = parse();
        if (!result){
            tokens = null;
            return false;
        }
        
        // Success! Cache as int
        numericValue = interpetAsInt();
        return true;
    }