Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. The Lounge
  3. I've just had a rather interesting idea...

I've just had a rather interesting idea...

Scheduled Pinned Locked Moved The Lounge
wpfcsharpcomarchitecturequestion
31 Posts 15 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • L Offline
    L Offline
    Lost User
    wrote on last edited by
    #1

    In a windowed working environment, one thing that, i think, slows me down a bit, is mouse accuracy. When I am clicking on, say, the Big X to close a window, in Windows - or the equivalent in any other OS, the X is small, my screen is large - so my mouse has to move a long way, then slow and stop accurately on the X. So how about this for an idea? Allow buttons (such as the X) to have a 'depth' and, possibly, a radius. Give the mouse pointer a property (call it 'weight') So, when the mouse pointer approaches the X, at distance Radius it starts to 'roll towards' the center of the X. Gently at first (so, a gravity-like effect, if you will). And once the mouse is within the radius, it would take more 'effort' to move it out. I reckon, with a bit of effort, it would be completely and utterly awesome. Which means someone has probably already done it! What do you think? Genius or Fool? And, now I've mentioned it publicly, does that mean I can't patent it?

    MVVM# - See how I did MVVM my way ___________________________________________ Man, you're a god. - walterhevedeich 26/05/2011 .\\axxx (That's an 'M')

    K C D M L 15 Replies Last reply
    0
    • L Lost User

      In a windowed working environment, one thing that, i think, slows me down a bit, is mouse accuracy. When I am clicking on, say, the Big X to close a window, in Windows - or the equivalent in any other OS, the X is small, my screen is large - so my mouse has to move a long way, then slow and stop accurately on the X. So how about this for an idea? Allow buttons (such as the X) to have a 'depth' and, possibly, a radius. Give the mouse pointer a property (call it 'weight') So, when the mouse pointer approaches the X, at distance Radius it starts to 'roll towards' the center of the X. Gently at first (so, a gravity-like effect, if you will). And once the mouse is within the radius, it would take more 'effort' to move it out. I reckon, with a bit of effort, it would be completely and utterly awesome. Which means someone has probably already done it! What do you think? Genius or Fool? And, now I've mentioned it publicly, does that mean I can't patent it?

      MVVM# - See how I did MVVM my way ___________________________________________ Man, you're a god. - walterhevedeich 26/05/2011 .\\axxx (That's an 'M')

      K Offline
      K Offline
      killabyte
      wrote on last edited by
      #2

      sounds like a good idea but......... the FPS player in me wants to call you a noob and tell you to learn to aim

      L 1 Reply Last reply
      0
      • L Lost User

        In a windowed working environment, one thing that, i think, slows me down a bit, is mouse accuracy. When I am clicking on, say, the Big X to close a window, in Windows - or the equivalent in any other OS, the X is small, my screen is large - so my mouse has to move a long way, then slow and stop accurately on the X. So how about this for an idea? Allow buttons (such as the X) to have a 'depth' and, possibly, a radius. Give the mouse pointer a property (call it 'weight') So, when the mouse pointer approaches the X, at distance Radius it starts to 'roll towards' the center of the X. Gently at first (so, a gravity-like effect, if you will). And once the mouse is within the radius, it would take more 'effort' to move it out. I reckon, with a bit of effort, it would be completely and utterly awesome. Which means someone has probably already done it! What do you think? Genius or Fool? And, now I've mentioned it publicly, does that mean I can't patent it?

        MVVM# - See how I did MVVM my way ___________________________________________ Man, you're a god. - walterhevedeich 26/05/2011 .\\axxx (That's an 'M')

        C Offline
        C Offline
        Chris Losinger
        wrote on last edited by
        #3

        here is[^] a similar concept, but with a mechanism in the mouse that causes you to feel the attraction to clickable areas.

        image processing toolkits | batch image processing

        1 Reply Last reply
        0
        • L Lost User

          In a windowed working environment, one thing that, i think, slows me down a bit, is mouse accuracy. When I am clicking on, say, the Big X to close a window, in Windows - or the equivalent in any other OS, the X is small, my screen is large - so my mouse has to move a long way, then slow and stop accurately on the X. So how about this for an idea? Allow buttons (such as the X) to have a 'depth' and, possibly, a radius. Give the mouse pointer a property (call it 'weight') So, when the mouse pointer approaches the X, at distance Radius it starts to 'roll towards' the center of the X. Gently at first (so, a gravity-like effect, if you will). And once the mouse is within the radius, it would take more 'effort' to move it out. I reckon, with a bit of effort, it would be completely and utterly awesome. Which means someone has probably already done it! What do you think? Genius or Fool? And, now I've mentioned it publicly, does that mean I can't patent it?

          MVVM# - See how I did MVVM my way ___________________________________________ Man, you're a god. - walterhevedeich 26/05/2011 .\\axxx (That's an 'M')

          D Offline
          D Offline
          Dave Kreskowiak
          wrote on last edited by
          #4

          killabyte didn't do it, so I WILL. YOU NOOB!! I could sweep your head with the mouse and >click< BOOM! Killed _Maxx_ +100 Headshot! +50

          A guide to posting questions on CodeProject[^]
          Dave Kreskowiak

          L 1 Reply Last reply
          0
          • L Lost User

            In a windowed working environment, one thing that, i think, slows me down a bit, is mouse accuracy. When I am clicking on, say, the Big X to close a window, in Windows - or the equivalent in any other OS, the X is small, my screen is large - so my mouse has to move a long way, then slow and stop accurately on the X. So how about this for an idea? Allow buttons (such as the X) to have a 'depth' and, possibly, a radius. Give the mouse pointer a property (call it 'weight') So, when the mouse pointer approaches the X, at distance Radius it starts to 'roll towards' the center of the X. Gently at first (so, a gravity-like effect, if you will). And once the mouse is within the radius, it would take more 'effort' to move it out. I reckon, with a bit of effort, it would be completely and utterly awesome. Which means someone has probably already done it! What do you think? Genius or Fool? And, now I've mentioned it publicly, does that mean I can't patent it?

            MVVM# - See how I did MVVM my way ___________________________________________ Man, you're a god. - walterhevedeich 26/05/2011 .\\axxx (That's an 'M')

            M Offline
            M Offline
            mikemar
            wrote on last edited by
            #5

            A similar idea exist in computer aided drafting called "snap points". In that case if you are close to something like say the end of a line it will act as if you clicked on the end of the line.

            R 1 Reply Last reply
            0
            • M mikemar

              A similar idea exist in computer aided drafting called "snap points". In that case if you are close to something like say the end of a line it will act as if you clicked on the end of the line.

              R Offline
              R Offline
              Ravi Bhavnani
              wrote on last edited by
              #6

              Yes, PShop and WinAmp have used employed snap points for almost 20 years. /ravi

              My new year resolution: 2048 x 1536 Home | Articles | My .NET bits | Freeware ravib(at)ravib(dot)com

              1 Reply Last reply
              0
              • L Lost User

                In a windowed working environment, one thing that, i think, slows me down a bit, is mouse accuracy. When I am clicking on, say, the Big X to close a window, in Windows - or the equivalent in any other OS, the X is small, my screen is large - so my mouse has to move a long way, then slow and stop accurately on the X. So how about this for an idea? Allow buttons (such as the X) to have a 'depth' and, possibly, a radius. Give the mouse pointer a property (call it 'weight') So, when the mouse pointer approaches the X, at distance Radius it starts to 'roll towards' the center of the X. Gently at first (so, a gravity-like effect, if you will). And once the mouse is within the radius, it would take more 'effort' to move it out. I reckon, with a bit of effort, it would be completely and utterly awesome. Which means someone has probably already done it! What do you think? Genius or Fool? And, now I've mentioned it publicly, does that mean I can't patent it?

                MVVM# - See how I did MVVM my way ___________________________________________ Man, you're a god. - walterhevedeich 26/05/2011 .\\axxx (That's an 'M')

                L Offline
                L Offline
                Lost User
                wrote on last edited by
                #7

                _Maxxx_ wrote:

                In a windowed working environment, one thing that, i think, slows me down a bit, is mouse accuracy.
                 
                When I am clicking on, say, the Big X to close a window, in Windows - or the equivalent in any other OS, the X is small, my screen is large - so my mouse has to move a long way, then slow and stop accurately on the X.
                 
                So how about this for an idea?
                 
                Allow buttons (such as the X) to have a 'depth' and, possibly, a radius. Give the mouse pointer a property (call it 'weight')

                I think you're just too old to use a computer any more, hand it ovet to your son who has the physical coordination to use it.

                Michael Martin Australia "I controlled my laughter and simple said "No,I am very busy,so I can't write any code for you". The moment they heard this all the smiling face turned into a sad looking face and one of them farted. So I had to leave the place as soon as possible." - Mr.Prakash One Fine Saturday. 24/04/2004

                L 1 Reply Last reply
                0
                • L Lost User

                  In a windowed working environment, one thing that, i think, slows me down a bit, is mouse accuracy. When I am clicking on, say, the Big X to close a window, in Windows - or the equivalent in any other OS, the X is small, my screen is large - so my mouse has to move a long way, then slow and stop accurately on the X. So how about this for an idea? Allow buttons (such as the X) to have a 'depth' and, possibly, a radius. Give the mouse pointer a property (call it 'weight') So, when the mouse pointer approaches the X, at distance Radius it starts to 'roll towards' the center of the X. Gently at first (so, a gravity-like effect, if you will). And once the mouse is within the radius, it would take more 'effort' to move it out. I reckon, with a bit of effort, it would be completely and utterly awesome. Which means someone has probably already done it! What do you think? Genius or Fool? And, now I've mentioned it publicly, does that mean I can't patent it?

                  MVVM# - See how I did MVVM my way ___________________________________________ Man, you're a god. - walterhevedeich 26/05/2011 .\\axxx (That's an 'M')

                  R Offline
                  R Offline
                  Ravi Bhavnani
                  wrote on last edited by
                  #8

                  I like the idea.  Dunno if you can patent its implementation - I believe there's prior art (see my reply re: PShop and WinAmp). /ravi

                  My new year resolution: 2048 x 1536 Home | Articles | My .NET bits | Freeware ravib(at)ravib(dot)com

                  1 Reply Last reply
                  0
                  • L Lost User

                    In a windowed working environment, one thing that, i think, slows me down a bit, is mouse accuracy. When I am clicking on, say, the Big X to close a window, in Windows - or the equivalent in any other OS, the X is small, my screen is large - so my mouse has to move a long way, then slow and stop accurately on the X. So how about this for an idea? Allow buttons (such as the X) to have a 'depth' and, possibly, a radius. Give the mouse pointer a property (call it 'weight') So, when the mouse pointer approaches the X, at distance Radius it starts to 'roll towards' the center of the X. Gently at first (so, a gravity-like effect, if you will). And once the mouse is within the radius, it would take more 'effort' to move it out. I reckon, with a bit of effort, it would be completely and utterly awesome. Which means someone has probably already done it! What do you think? Genius or Fool? And, now I've mentioned it publicly, does that mean I can't patent it?

                    MVVM# - See how I did MVVM my way ___________________________________________ Man, you're a god. - walterhevedeich 26/05/2011 .\\axxx (That's an 'M')

                    A Offline
                    A Offline
                    AspDotNetDev
                    wrote on last edited by
                    #9

                    Neat idea, though I'm not sure I'd like my mouse sinking into places and conflicing with my movements. I like mouse movement to be predictable according to my movements rather than invisible environmental variables. Instead, I'd like window elements to be attracted to the mouse. So as you approach the X button, it grows in size and gravitates toward the mouse pointer. Alternatively, you could create something like a magnifying glass effect. However, instead of a simple magnification within a circle, you create a logorithmic drop off, so the magnification slowly reduces the further away from the mouse cursor you see (instead of a constant 2x magnification). And rather than a simple magnification that overlays and covers up the adjacent parts of the screen, the rest of the view space could compress slightly to make room for the expanded/magnified area around the mouse. Think of it as a toned-down curvy circus mirror. To visualize this, this would be the bad version (with the magnification overlapping the normal space): bad (notice that you can't read some of the words) Here is the good version: good (some things shrink, others expand, nothing is hidden by something expanded). Also, this could be based on individual controls, rather than smoothly mangifying pixels. So the button might grow by 2x evenly (so the button doesn't look all curvy) and a label might grow by 1.5x evenly (so the text isn't all curvy). For controls that are very large (e.g., big labels), maybe those do have curves (or maybe just the individual words expand at different rates).

                    Thou mewling ill-breeding pignut!

                    1 Reply Last reply
                    0
                    • L Lost User

                      In a windowed working environment, one thing that, i think, slows me down a bit, is mouse accuracy. When I am clicking on, say, the Big X to close a window, in Windows - or the equivalent in any other OS, the X is small, my screen is large - so my mouse has to move a long way, then slow and stop accurately on the X. So how about this for an idea? Allow buttons (such as the X) to have a 'depth' and, possibly, a radius. Give the mouse pointer a property (call it 'weight') So, when the mouse pointer approaches the X, at distance Radius it starts to 'roll towards' the center of the X. Gently at first (so, a gravity-like effect, if you will). And once the mouse is within the radius, it would take more 'effort' to move it out. I reckon, with a bit of effort, it would be completely and utterly awesome. Which means someone has probably already done it! What do you think? Genius or Fool? And, now I've mentioned it publicly, does that mean I can't patent it?

                      MVVM# - See how I did MVVM my way ___________________________________________ Man, you're a god. - walterhevedeich 26/05/2011 .\\axxx (That's an 'M')

                      P Offline
                      P Offline
                      Peter_in_2780
                      wrote on last edited by
                      #10

                      You've just reminded me of a piece of what we would probably now consider malware, but back then it was a load of fun to inflict on noobs. In the age of dinosaurs and Win95 (or maybe even 3.1?) there was a program that would intermittently pop up a kitten on screen and change the mouse cursor to an animated mouse. The kitten would then chase the mouse as you moved it. When it got bored (coffee break or think time) it would make the mouse cursor move just so the cat had something to chase. Listening in on the helpdesk was fun when a victim called and the helpdesk erk hadn't seen it. Cheers, Peter

                      Software rusts. Simon Stephenson, ca 1994.

                      J 1 Reply Last reply
                      0
                      • L Lost User

                        In a windowed working environment, one thing that, i think, slows me down a bit, is mouse accuracy. When I am clicking on, say, the Big X to close a window, in Windows - or the equivalent in any other OS, the X is small, my screen is large - so my mouse has to move a long way, then slow and stop accurately on the X. So how about this for an idea? Allow buttons (such as the X) to have a 'depth' and, possibly, a radius. Give the mouse pointer a property (call it 'weight') So, when the mouse pointer approaches the X, at distance Radius it starts to 'roll towards' the center of the X. Gently at first (so, a gravity-like effect, if you will). And once the mouse is within the radius, it would take more 'effort' to move it out. I reckon, with a bit of effort, it would be completely and utterly awesome. Which means someone has probably already done it! What do you think? Genius or Fool? And, now I've mentioned it publicly, does that mean I can't patent it?

                        MVVM# - See how I did MVVM my way ___________________________________________ Man, you're a god. - walterhevedeich 26/05/2011 .\\axxx (That's an 'M')

                        A Offline
                        A Offline
                        Ashley van Gerven
                        wrote on last edited by
                        #11

                        not sure if you're aware of this already.. on a maximized window you can pretty much close a *maximized* window blindly by moving to the top-right edge of the screen. I think this was introduced in Vista, or maybe 7... the concept of 'infinite height' buttons. Your idea might work well though. Although I think mouse gestures are already quite popular..

                        "For fifty bucks I'd put my face in their soup and blow." - George Costanza

                        CP article: SmartPager - a Flickr-style pager control with go-to-page popup layer.

                        1 Reply Last reply
                        0
                        • K killabyte

                          sounds like a good idea but......... the FPS player in me wants to call you a noob and tell you to learn to aim

                          L Offline
                          L Offline
                          Lost User
                          wrote on last edited by
                          #12

                          Mate! I'll 1v1 you at HL2Dm any day of the week - but I don't spend 8 hours a day doing that!

                          MVVM# - See how I did MVVM my way ___________________________________________ Man, you're a god. - walterhevedeich 26/05/2011 .\\axxx (That's an 'M')

                          K 1 Reply Last reply
                          0
                          • D Dave Kreskowiak

                            killabyte didn't do it, so I WILL. YOU NOOB!! I could sweep your head with the mouse and >click< BOOM! Killed _Maxx_ +100 Headshot! +50

                            A guide to posting questions on CodeProject[^]
                            Dave Kreskowiak

                            L Offline
                            L Offline
                            Lost User
                            wrote on last edited by
                            #13

                            See my response to him.

                            MVVM# - See how I did MVVM my way ___________________________________________ Man, you're a god. - walterhevedeich 26/05/2011 .\\axxx (That's an 'M')

                            1 Reply Last reply
                            0
                            • L Lost User

                              In a windowed working environment, one thing that, i think, slows me down a bit, is mouse accuracy. When I am clicking on, say, the Big X to close a window, in Windows - or the equivalent in any other OS, the X is small, my screen is large - so my mouse has to move a long way, then slow and stop accurately on the X. So how about this for an idea? Allow buttons (such as the X) to have a 'depth' and, possibly, a radius. Give the mouse pointer a property (call it 'weight') So, when the mouse pointer approaches the X, at distance Radius it starts to 'roll towards' the center of the X. Gently at first (so, a gravity-like effect, if you will). And once the mouse is within the radius, it would take more 'effort' to move it out. I reckon, with a bit of effort, it would be completely and utterly awesome. Which means someone has probably already done it! What do you think? Genius or Fool? And, now I've mentioned it publicly, does that mean I can't patent it?

                              MVVM# - See how I did MVVM my way ___________________________________________ Man, you're a god. - walterhevedeich 26/05/2011 .\\axxx (That's an 'M')

                              L Offline
                              L Offline
                              Lost User
                              wrote on last edited by
                              #14

                              Not sure what you are puffing on this morning. What happens if the "x" is not the only thing on the screen and you have to move the mouse past these other things.

                              Peter Wasser Art is making something out of nothing and selling it. Frank Zappa

                              L 1 Reply Last reply
                              0
                              • L Lost User

                                Mate! I'll 1v1 you at HL2Dm any day of the week - but I don't spend 8 hours a day doing that!

                                MVVM# - See how I did MVVM my way ___________________________________________ Man, you're a god. - walterhevedeich 26/05/2011 .\\axxx (That's an 'M')

                                K Offline
                                K Offline
                                killabyte
                                wrote on last edited by
                                #15

                                _Maxxx_ wrote:

                                but I don't spend 8 hours a day doing that!

                                you dont have to lie here, you're amogst friends :-\

                                L 1 Reply Last reply
                                0
                                • L Lost User

                                  Not sure what you are puffing on this morning. What happens if the "x" is not the only thing on the screen and you have to move the mouse past these other things.

                                  Peter Wasser Art is making something out of nothing and selling it. Frank Zappa

                                  L Offline
                                  L Offline
                                  Lost User
                                  wrote on last edited by
                                  #16

                                  we're talking 'slight indentations' not friggin' black holes, here. If your mouse had force-feedback, you'd feel it bumping over the other controls, but they wouldn't be toooooo sticky. In fact, a clever programmer would probably decide not to even look at close-by objects when the mouse velocity was over a certain limit - so the gravitational pull wouldn't come into effect until you started to slow the mouse down.

                                  pwasser wrote:

                                  Not sure what you are puffing on this morning.

                                  Prime ganja

                                  MVVM# - See how I did MVVM my way ___________________________________________ Man, you're a god. - walterhevedeich 26/05/2011 .\\axxx (That's an 'M')

                                  1 Reply Last reply
                                  0
                                  • K killabyte

                                    _Maxxx_ wrote:

                                    but I don't spend 8 hours a day doing that!

                                    you dont have to lie here, you're amogst friends :-\

                                    L Offline
                                    L Offline
                                    Lost User
                                    wrote on last edited by
                                    #17

                                    I'm not lying. It's more like 10 ;)

                                    MVVM# - See how I did MVVM my way ___________________________________________ Man, you're a god. - walterhevedeich 26/05/2011 .\\axxx (That's an 'M')

                                    1 Reply Last reply
                                    0
                                    • L Lost User

                                      In a windowed working environment, one thing that, i think, slows me down a bit, is mouse accuracy. When I am clicking on, say, the Big X to close a window, in Windows - or the equivalent in any other OS, the X is small, my screen is large - so my mouse has to move a long way, then slow and stop accurately on the X. So how about this for an idea? Allow buttons (such as the X) to have a 'depth' and, possibly, a radius. Give the mouse pointer a property (call it 'weight') So, when the mouse pointer approaches the X, at distance Radius it starts to 'roll towards' the center of the X. Gently at first (so, a gravity-like effect, if you will). And once the mouse is within the radius, it would take more 'effort' to move it out. I reckon, with a bit of effort, it would be completely and utterly awesome. Which means someone has probably already done it! What do you think? Genius or Fool? And, now I've mentioned it publicly, does that mean I can't patent it?

                                      MVVM# - See how I did MVVM my way ___________________________________________ Man, you're a god. - walterhevedeich 26/05/2011 .\\axxx (That's an 'M')

                                      Steve EcholsS Offline
                                      Steve EcholsS Offline
                                      Steve Echols
                                      wrote on last edited by
                                      #18

                                      Just use the keyboard (alt+f4, in this case) :)


                                      - S 50 cups of coffee and you know it's on! Code, follow, or get out of the way.

                                      • S
                                        50 cups of coffee and you know it's on!
                                        Code, follow, or get out of the way.
                                      L 1 Reply Last reply
                                      0
                                      • L Lost User

                                        In a windowed working environment, one thing that, i think, slows me down a bit, is mouse accuracy. When I am clicking on, say, the Big X to close a window, in Windows - or the equivalent in any other OS, the X is small, my screen is large - so my mouse has to move a long way, then slow and stop accurately on the X. So how about this for an idea? Allow buttons (such as the X) to have a 'depth' and, possibly, a radius. Give the mouse pointer a property (call it 'weight') So, when the mouse pointer approaches the X, at distance Radius it starts to 'roll towards' the center of the X. Gently at first (so, a gravity-like effect, if you will). And once the mouse is within the radius, it would take more 'effort' to move it out. I reckon, with a bit of effort, it would be completely and utterly awesome. Which means someone has probably already done it! What do you think? Genius or Fool? And, now I've mentioned it publicly, does that mean I can't patent it?

                                        MVVM# - See how I did MVVM my way ___________________________________________ Man, you're a god. - walterhevedeich 26/05/2011 .\\axxx (That's an 'M')

                                        J Offline
                                        J Offline
                                        Joe Woodbury
                                        wrote on last edited by
                                        #19

                                        So you have several windows on top of each other. Which one gets the black hole experience? Oh, the top one. But what if I don't want to close the top one, but the window just behind it, whose "X" is right above the "X" of the active window? Or, I don't want to close the window at all, just drag the mouse to another part of the screen, but all the black hole buttons keep sucking my mouse off track like it's a stumbling drunk. In other words, it would suck :laugh:

                                        L 1 Reply Last reply
                                        0
                                        • Steve EcholsS Steve Echols

                                          Just use the keyboard (alt+f4, in this case) :)


                                          - S 50 cups of coffee and you know it's on! Code, follow, or get out of the way.

                                          L Offline
                                          L Offline
                                          Lost User
                                          wrote on last edited by
                                          #20

                                          My idea was a generic one with a specific example.

                                          MVVM# - See how I did MVVM my way ___________________________________________ Man, you're a god. - walterhevedeich 26/05/2011 .\\axxx (That's an 'M')

                                          Steve EcholsS 1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • World
                                          • Users
                                          • Groups