# Rotating Multi-Line Text with Multi-Rows

I am trying to build a basic table and have come up with the following code. My problem is that the rotated boxes are weirdly aligned:

Optimally, all the small rotated boxes should be centered left-right, and the row-spanning, rotated ones should be centered in both ways. I tried using origin=c with rotatebox, but it didn't change anything.

\begin{table}
\begin{tabularx}{\textwidth}{X|X|X|X|X|X|X}
\multirow{2}{*}{\rotatebox[]{90}{Tool}} & \multicolumn{2}{c|}{\makecell{Usability,\\ Consistency,\\Reuse}} & \multicolumn{3}{c|}{Support for \ac{UCSD}} & \multirow{2}{*}{\rotatebox[]{90}{\makecell{Structured\\Storage}}} \\
& \rotatebox[origin=c]{90}{\makecell{Shape\\Recognition}} & \rotatebox[origin=c]{90}{\makecell{Similarity\\Search}} & \rotatebox[origin=c]{90}{\makecell{Real-Time\\Collaboration}} & \rotatebox[origin=c]{90}{\makecell{Low- \& High\\Fidelity\\Prototypes}} & \rotatebox[origin=c]{90}{\makecell{Interactive\\Testing}} & \\ \hline
\end{tabularx}

\caption{Comparison}
\label{tab:existing_tools}
\end{table}


\documentclass{article}
\usepackage{rotating}
\usepackage{makecell, tabularx}
\newcolumntype{C}{>{\centering\arraybackslash}X}

\begin{document}
\begin{table}
\begin{tabularx}{\textwidth}{C|C|C|C|C|C|C}
& \multicolumn{2}{c|}{\makecell[b]{Usability,\\ Consistency,\\Reuse}}
& \multicolumn{3}{c|}{Support for UCSD}
&                                           \\