 					textLabelFrame.horizontalCenter = size.width / 2
 				}
 			}
-		}
-		else { // horizontal layout
+
+		case .imageLeft, .imageRight: // horizontal
+
 			// step 2: measure sizes
 
 			if let imageView = imageView {


	public enum Arrangement {

		case imageBottom
		case imageLeft
		case imageRight

				switch verticalAlignment {
				case .bottom:
					textLabelFrame.bottom = size.height
					
				case .top:
					textLabelFrame.top = 0
					
				case .center, .fill:
					textLabelFrame.verticalCenter = size.height / 2
				}
			}

		case .imageBehindText:

			// step 2: measure sizes

			if let imageView = imageView {
				if verticalAlignment == .fill && horizontalAlignment == .fill {
					imageViewFrame.size = remainingSize
				}
				else {
					imageViewFrame.size = imageView.sizeThatFitsSize(remainingSize, allowsTruncation: true).transform(imageView.transform)

					if verticalAlignment == .fill {
						imageViewFrame.height = remainingSize.height
					}
					else if horizontalAlignment == .fill {
						imageViewFrame.width = remainingSize.width
					}
				}
			}
			else if let activityIndicator = activityIndicator {
				imageViewFrame.size = activityIndicator.sizeThatFitsSize(remainingSize, allowsTruncation: true).transform(activityIndicator.transform)
			}

			if let textLabel = textLabel {
				if verticalAlignment == .fill && horizontalAlignment == .fill {
					textLabelFrame.size = remainingSize
				}
				else {
					textLabelFrame.size = textLabel.sizeThatFitsSize(remainingSize, allowsTruncation: true).transform(textLabel.transform)
				}
			}

			// step 3: measure horizontal positions

			switch horizontalAlignment {
			case .fill, .left:
				imageViewFrame.left = 0
				textLabelFrame.left = 0

			case .right:
				imageViewFrame.right = size.width
				textLabelFrame.right = size.width

			case .center:
				imageViewFrame.horizontalCenter = size.width / 2
				textLabelFrame.horizontalCenter = size.width / 2
			}

			// step 4: measure vertical positions

			switch verticalAlignment {
			case .fill, .top:
				imageViewFrame.top = 0
				textLabelFrame.top = 0

			case .bottom:
				imageViewFrame.bottom = size.height
				textLabelFrame.bottom = size.height

			case .center:
				imageViewFrame.verticalCenter = size.height / 2
				textLabelFrame.verticalCenter = size.height / 2
			}
		}

