Adding functional Alignment.  This needs some cleanup, and I think there are a few ways to optimize the runtime that should be explored.