Hello, i posted this thread here because i'm using WPF technology, so i'll explain my problem.

I'm developing a group system for managing contacts, the system is done, i just feel the way i'm doing it is not the most efficient one, so i'll explain how i'm doing it:

When the application loads up, it searches for files with extension ".cp", which i gave to the files, those files contain the contacts stored before closing the application, the applications uses a default contacts group named "Contacts" which will hold all the contacts that are not set to a group, so the applications creates new groups based on the name of the files that were found, the groups created contains the contacts in those files, the application saves by default 1 file, named Contacts, if you change the name of that file externally, then a group with that filename will be created, and if no file with the name "Contacts.cp" is found the default group for storing contacts is created.
here's a little chart on how my system works:



My point is, i'm i doing this the right way, or should i re-design the whole thing ? what i'm doing wrong? can someone show me the right way to do this ?

I'm a 14 years old teen, this is my first project i'm trying to follow a designing and developing process, being really organized so i would really like to get help on this one.

Also, how can i get all the contacts from the groups without having to create another group containing all the contacts in the other groups ?