re-organize responsibilities and add transition to list changing