public static Tuple addTweet(int userId, byte[] encTweetText, Connection cnxn) {
		Statement stmnt = null;
		String query = "";
		ResultSet rs = null;
		
		//insert tweet
		//TODO: implement stored procedure that returns id so I don't have to get the id in the next step
		try {
			PreparedStatement pstmt = cnxn.prepareStatement("INSERT INTO Tweets(text) Values (?)"); 
                   
			pstmt.setBytes(1, encTweetText);
			pstmt.execute();
		} catch (SQLException ex){
			return new Tuple(false, ex.getMessage());
		}
		
		//get tweet id to associate with user in Sends (see above comment about stored procedure for insert that returns id)
		try {
			PreparedStatement pstmt = cnxn.prepareStatement("SELECT id FROM Tweets WHERE text = ?");
			pstmt.setBytes(1, encTweetText);
			rs = pstmt.executeQuery();
			
			
			if (rs.next()) {
				int tweetId = rs.getInt("id");
				stmnt = cnxn.createStatement();
				query = "INSERT INTO Sends(user_id, tweet_id) Values("+ userId + ", " + tweetId + ")"; 
				stmnt.execute(query);
			}
		} catch (SQLException ex) {
			try {
				stmnt = cnxn.createStatement();
			
				//TODO: use transactions so as to avoid this hacky rollback
				query = "DELETE FROM Tweets WHERE text = '"+ encTweetText + "'"; 
				stmnt.execute(query);
			} catch (SQLException e) {
				return new Tuple(false, e.getMessage());
			}
			return new Tuple(false, ex.getMessage());
		}
		
		return new Tuple(true, "Tweet added");
			
	}