Fetching the course table is now *much* faster. Instead of memoizing the HTML for the entire table for each term, we now memoize every course's toRow() representation, separately. On startup, all courses are memoized. Now when we get a query, we use HQL to quickly select the result course IDs, then apply that against our cache to turn this into a table. We still need to work on the toRow() memoization since it's still a hack, but this gives us a lot more freedom. Performance on my dev box is ~0.026 seconds.