Version 2

This adds a lot of the functionality that @alexbaldwin was asking for. Or at least it will once it's merged.