Hi, This looks basically OK. Question about outputs, though:
You MAY want to think through what happens at Power-On time. BEFORE your startup code runs.
Can any Bad Stuff happen before you set the initial output states??
Maybe look at the example in the http://arduinoinfo.info wiki here: http://goo.gl/TPpMN (This uses active-low relay boards in a way that guarantees no improper activations at startup.
Maybe not as important for you as for the Fireworks-Shooter guys
but worth considering...