implementation des differentes classes