My state logic is OK but I wish I could consolidate this a little better. #WorkInProgress (cc @debreuil @ecancil)