added part 3. needs some work switching between features