add State Patterns