This is a rewrite of the rewrite. It now uses classes and dynamically generates lists.