public function publish($topicArn, $message, $subject = '', $messageStructure = '') {
		if(empty($topicArn) || empty($message)) {
			throw new InvalidArgumentException('Must supply a TopicARN and Message to publish to a topic');
		}

		$params = array(
			'TopicArn' => $topicArn,
			'Message' => $message
		);

		if(!empty($subject)) {
			$params['Subject'] = $subject;
		}

		if(!empty($messageStructure)) {
			$params['MessageStructure'] = $messageStructure;
		}

		$resultXml = $this->_request('Publish', $params);

		return strval($resultXml->PublishResult->MessageId);
	}