When I first started this project, each game object had a two-dimensional position and an index to indicate what side of the cube it was on. When necessary, I would transform the object's x,y position and local rotation by it's side's xform matrix. I naively thought it would be easier that way. I came to the realizatin the other day that I could greatly simplify and generalize the draw routine if objects keep complete 3D xform data. So I decided to go through my code and switch out the old way for the new. It turns out that it simplifies a lot of code. Pretty much everything except for object creation routines, which is okay by me.
The downside is that there is a lot of code to go through and revise and refactor. And weird bugs happen when pre-revision code and post-revision code interact. Such is the price of naivete.
Update: Done revising camera movement and rendering code. Now I get to go through the player movement/collision code. Then, I think I'll be done with this overhaul.