Joseph Amoah Profile and Player Statistics
First name: Joseph
Last name: Amoah
Position: Defender, Midfielder
Nationality:

Football Career Transfers and Statistics

We are going to show you the list of football clubs and seasons in which Joseph Amoah has played. It includes the total number of appearance (caps), substitution details, goals, yellow and red cards stats.

Competition Season Football Club
Premier Liga 2025/2026 Rudar Prijedor 6 2 0 0 0 1 0
Premier League 2024/2025 Legon Cities FC 16 1 0 0 0 1 0
Cup 2023/2024 Legon Cities FC 1 0 0 1 0 0 0
Premier League 2023/2024 Legon Cities FC 2 0 0 0 0 1 0
2. Division: Group H 2020/2021 Moura 9 2 4 1 2 2 0
2. Division: Group D 2018/2019 Louletano 17 5 10 2 0 2 0
2. Division: Group E 2017/2018 Moura 40 4 34 8 0 2 0
Premier League 2015/2016 Bechem United 6 4 1 0 0 0 0

Joseph Amoah has played in the following competitions and football tournaments.

Now showing: All Competitions

DateHomeScoreAwayHT
29/08/2025 Sarajevo
1 - 0
Rudar Prijedor 0-0H2H+
  30' Nemanja Pekija
  30'
  41' Nedim Keranovic
Filip Jovic 45+3'  
Adem Ljajic 55' 1 - 0  
  61' Jorge Bolivar Cano
  61' Joseph Amoah
  61' Molls Donald Ntchamda
  61' Branislav Kocić
  61' Nedim Keranovic
  61' Mihajlo Savanovic
  62' Đuro-Giulio Đekić
Amar Beganovic 71'  
Grigore Turda 71'  
Mihael Mlinarić 82'  
Gojko Cimirot 82'  
Anes Krdzalic 82'  
Muamer Hamzic 82'  
Aleksandar Djordjevic 82'  
Renan Oliveira 82'  
  86' K. Lamadžema
  86' Ognjen Milanović
Adem Ljajic 90'  
Edin Julardzija 90'  
Renan Oliveira 90+5'  
Grigore Turda 90+5'  
22/08/2025 Posusje
0 - 0
Rudar Prijedor 0-0H2H+
  25' Nemanja Raković
  46' Nemanja Raković
  46' Nedim Keranovic
  46' Luka Misimović
  46' Arber Mrijaj
  58' Joseph Amoah
J. Raužan 63'  
Mateo Andačić 67'  
Zvonimir Begić 67'  
J. Raužan 67'  
Marko Hanuljak 67'  
  69' Nedim Keranovic
M. Čuić 75'  
Alex Sobczyk 75'  
Ante Živković 82'  
Fran Čuljak 82'  
Leon Kreković 82'  
David Mistrafovic 82'  
  82' Jorge Bolivar Cano
  82' Mihajlo Savanovic
Marko Domančić 84'  
  89' Max Galić
  89' Molls Donald Ntchamda
15/08/2025 Rudar Prijedor
1 - 0
Radnik Bijeljina 1-0H2H+
Branislav Kocić 14'  
Álvaro Roncal 20'  
Andrés Mohedano 22' 1 - 0  
Álvaro Roncal 35'  
  45+3' Luka Čumić
Branislav Kocić 46'  
Jorge Bolivar Cano 46'  
Mihajlo Savanovic 46'  
Arber Mrijaj 46'  
  56' Lazar Vuković
  56' Marko Čubrilo
  56' Đorđe Pantelić
  56'
  63' Faruk Gogić
  64' Miroslav Maričić
  64' E. Črnko
  74' Faruk Gogić
  74' Ognjen Klenpić
  79' Božidar Dimitrić
  82' Samy Faraj
09/08/2025 Zeljeznicar
1 - 1
Rudar Prijedor 0-0H2H+
Marin Karamarko 43'  
Vinicius Peixoto 46'  
Matej Cvetanovski 46'  
Afan Fočo 46'  
Josip Pejic 46'  
Afan Fočo 48'  
  0 - 1 53' Andrés Mohedano
  56' Max Galić
E. Alić 58'  
Joey Konings 67'  
Sulejman Krpić 67'  
Dženan Šabić 67'  
D. Rakić 67'  
Collin Seedorf 70' 1 - 1  
  75' Molls Donald Ntchamda
  75' Joseph Amoah
  79' Mihajlo Savanovic
  79' K. Lamadžema
  79' Nedim Keranovic
  79' Ognjen Milanović
Madžid Šošić 80'  
Samir Radovac 80'  
  84' Andrés Mohedano
Sulejman Krpić 90+1'  
D. Rakić 90+1'  
02/08/2025 Rudar Prijedor
1 - 3
Siroki Brijeg 0-2H2H+
  0 - 1 21' Matija Kolarić
  0 - 2 30' Domagoj Jelavic
Demetre Gvasalia 46'  
46'  
Molls Donald Ntchamda 63'  
Nedim Keranovic 63'  
K. Lamadžema 63'  
Mihajlo Savanovic 63'  
  67' Marko Matić
  67' Filip Matić
  67' Ivan Delić
  67'
  0 - 3 72' Mato Stanić
Abel Pascual 78' 1 - 3  
  80' Domagoj Jelavic
  80' Antoni Bajkuša
  80' Tomislav Tomić
  80' Cyrille Kpan
  90+1' Matija Kolarić
  90+1' Marin Ćalušić
27/07/2025 Borac Banja Luka
6 - 0
Rudar Prijedor 2-0H2H+
L. Juričić 7' 1 - 0  
David Vuković 36' 2 - 0  
Srđan Grahovac 41'  
  46' K. Lamadžema
  46' Nedim Keranovic
  46' Mihajlo Savanovic
  46' Ognjen Milanović
Sandi Ogrinec 53'  
David Vuković 56' 3 - 0  
Stefan Savić 59'  
Amer Hiroš 59'  
  66' Nemanja Raković
  67' Demetre Gvasalia
  67' Stefan Radaković
L. Juričić 77' 4 - 0  
L. Juričić 78'  
K. Perić 78'  
Sandi Ogrinec 78'  
Sander Coopman 78'  
David Vuković 82'  
David Čavić 82'  
Damir Hrelja 82'  
Pavle Đajić 82'  
  82' Molls Donald Ntchamda
  82' Aljoša Rađenović
K. Perić 84' 5 - 0  
David Čavić 87' 6 - 0  
01/06/2025 Legon Cities FC
0 - 2
Accra Hearts of Oak 0-1H2H+
  0 - 1 21' Kwabena Boateng
Robert Addo 24'  
  46'
  46'
  0 - 2 50'
  52' Hamza Issah
59'  
25/05/2025 Aduana Stars
4 - 0
Legon Cities FC 1-0H2H+
42' 1 - 0  
62' 2 - 0  
K. Boateng 67' 3 - 0  
80' 4 - 0  
04/05/2025 Bechem United
1 - 0
Legon Cities FC 0-0H2H+
Baldé Bah 57'  
57'  
  58' Joseph Amoah
  58'
  58' Emmanuel Gyamfi
  58'
80' 1 - 0  
27/04/2025 Legon Cities FC
0 - 1
Heart of Lions 0-1H2H+
  20'
  35'
  0 - 1 41'
Joseph Amoah 45+1'  
  62'
  62'
  71'
13/04/2025 Legon Cities FC
0 - 2
Samartex 0-1H2H+
  0 - 1 22' Emmanuel Mamah
  0 - 2 67' Baba Hamadu Musa
23/03/2025 Accra Lions FC
2 - 1
Legon Cities FC 2-1H2H+
4' 1 - 0  
  22'
28'  
  29'
  1 - 1 43' Frank Akoto
45+2' 2 - 1  
46'  
53'  
  74'
  74'
77'  
19/03/2025 Legon Cities FC
1 - 1
Vision 0-1H2H+
  0 - 1 9'
40'  
  45+3'
  48'
61' 1 - 1  
  85'
  90+6'
16/03/2025 Legon Cities FC
2 - 1
Berekum Chelsea 1-0H2H+
23' 1 - 0  
  1 - 1 81'
85' 2 - 1  
02/02/2025 Medeama
1 - 0
Legon Cities FC 0-0H2H+
  5'
  24'
  32' Amoah Amoah
  46' Osah Bernardinho Tetteh
  46'
  46'
Michael Sarpong 60'  
Robert Addo 60'  
Osah Bernardinho Tetteh 60'  
60'  
  66' Robert Addo
  66' E. Gyamfi
  66'
  67'
Nurudeen Abdulai 71' 1 - 0  
  82'
Nurudeen Abdulai 90+2'  
90+3'  
26/01/2025 Legon Cities FC
1 - 0
Bibiani Gold Stars FC 0-0H2H+
  30' Eric Bosomtwi
33'  
40'  
51' 1 - 0  
  55' Eric Bosomtwi
  55'
56'  
56'  
56'  
  56'
19/01/2025 Legon Cities FC
3 - 0
Dreams 0-0H2H+
39'  
50' 1 - 0  
Frank Akoto 72' 2 - 0  
90' 3 - 0  
90+7'  
03/01/2025 Accra Hearts of Oak
1 - 0
Legon Cities FC 1-0H2H+
41'  
Ramzy Yussif 45' 1 - 0  
  63'
83'  
03/03/2024 Legon Cities FC
0 - 0
Accra Lions FC 0-0H2H+
Stephen Appiah Asare 53'  
  60' Sadat Seidu
  60' Dominic Amponsah
Dooni Ramin 60'  
Sharon Kwabena Boateng 60'  
Suraje Yusif Kamal 74'  
  75' Mohammed Yahaya
  75' Issah Husein
Stephen Appiah Asare 80'  
Joseph Mereku 80'  
Fredrick Akatuk 80'  
Nasiru Moro 80'  
  84' Daniel Awuni
  84' Abdul-Shakun Abubakari
Joseph Amoah 85'  
Frank Antwi 85'  
Joseph Mereku 87'  
  90+6' Issah Husein
17/02/2024 Legon Cities FC
2 - 1
Nania 0-0H2H+
  45+4'
  0 - 1 75'
Alidu Mohammed 82' 1 - 1  
Joseph Amoah 89' 2 - 1  
04/12/2023 Accra Great Olympics
0 - 2
Legon Cities FC 0-0H2H+
  21' Michael Kweku Osei
Samuel Tenedu 26'  
  27' Christopher Nettey
  39' Joseph Amoah
  0 - 1 56' Kwabena Boateng
Matthew Agama 58'  
Solomon Twene 58'  
  73' Joseph Amoah
Emmanuel Antwi 73'  
Prince Antwi 73'  
  73' Joseph Amoah
  79' Albert Yeboah
  79' Frank Antwi
Christopher Nettey 82'  
Solomon Adomako 83'  
Nicholas Mensah 90+1'  
Michael Yeboah 90+2'  
  0 - 2 90+5' Joseph Mereku
10/03/2021 Moura
1 - 2
Lusitano GC Evora 1-1H2H+
J. Amoah 13' 1 - 0  
  1 - 1 17' Hélio Vaz
E. Frimpong 46'  
Pedro Diniz 46'  
S. Camará 56'  
  62' LusitanoGCEvora
I. Baldé 62'  
Bruno Gomes 62'  
Julinho 74'  
Tiago Nascimento 75'  
I. Karamoko 75'  
  1 - 2 76' Hélio Vaz
  85' Hélio Vaz
  85' J. Prado
Bruno Gomes 87'  
  88' Edu Vieira
  88' José Lúcio
  90' E. Onah
  90' Danny Gonçalves
28/02/2021 Lagos
1 - 1
Moura 0-0H2H+
  21' Lucas Tigrão
Tomás Seca 24'  
  28'
  37'
  39'
  40'
Tomás Seca 46'  
Diogo Pina Alves 46'  
  46' I. Baldé
  46' Amar Boissy
  54' E. Frimpong
  0 - 1 58' J. Amoah
  58' Rodrigo Bastos
  58' S. Camará
62'  
  64' J. Amoah
José Maria Silva Marques 66'  
Gerson Cassamá 66'  
H. Innusah 66'  
Rafael Pinto 66'  
H. Medarious 66'  
S. Zibo 66'  
  69'
  73' E. Frimpong
  73' Julinho
  73' Pedro Diniz
  73' I. Karamoko
  78' Amar Boissy
78'  
Tiago Coelho 79' 1 - 1  
Gonçalo Teixeira 86'  
Aristóteles Faustino Oliveira 86'  
17/01/2021 Vitória FC
2 - 1
Moura 2-0H2H+
Kamo-Kamo 18' 1 - 0  
Marcos Filipe Pereira Raposo 21'  
  36' I. Baldé
Marcos Filipe Pereira Raposo 38' 2 - 0  
  46' I. Baldé
  46' J. Amoah
  50' João Lobo
  57' Lucas Bridey
  57' Gabriel Branco
  57' Rodrigo Bastos
  57' E. Frimpong
Kamo-Kamo 66'  
Diogo Fernandes Martins 66'  
Frédéric Mendy 66'  
  72' Amar Boissy
  72' S. Camará
  2 - 1 74' S. Camará
Kamo-Kamo 74'  
Andre Pedrosa 74'  
Zequinha 89'  
Bruno 89'  
20/12/2020 Olhanense
1 - 1
Moura 0-0H2H+
Diogo Martins 22'  
  35' E. Frimpong
  44' Gabriel Branco
Caleb 44'  
Rodrigo Dantas 55'  
Léléco 55'  
Ivo Braz 55'  
J. San Martín 55'  
  60' Tó Miguel
  60' Julinho
J. San Martín 62'  
João Oliveira 70'  
Tiago Dias 70'  
  0 - 1 71' Pedro Diniz
  78' J. Amoah
  79' E. Frimpong
  79' Fábio Pereira
Denilson Gabionetta 84'  
Cláudio Major 84'  
  88' Diogo Arreigota
Cláudio Major 90' 1 - 1  
  90' Pedro Diniz
  90' Breno Herculano
  90+4' Lucas Tigrão
16/12/2020 Moura
0 - 1
Lagos 0-1H2H+
Amar Boissy 23'  
  0 - 1 24' Chico
  34' I. Muhammad
  52' Chico
Amar Boissy 55'  
J. Amoah 55'  
Breno Herculano 55'  
Pedro Diniz 55'  
S. Camará 58'  
  67' Kuiate Lamine
  75' Pedro Rodrigues
  75' José Maria Silva Marques
E. Frimpong 76'  
Ricardo Machado 76'  
  80' Chico
  80' Wilson Pina
Lucas Bridey 83'  
Bruno Gomes 83'  
João Lobo 85'  
  87' Gonçalo Teixeira
  87' Yaggo Gomes
  89' João Duarte
18/10/2020 Moura
2 - 2
Juventude Evora 0-0H2H+
  24' Digas
J. Amoah 25' 1 - 0  
Gabriel Branco 37'  
  1 - 1 39' A. Pérez
  55' Rodrigo Dias
Miguel Silva 62'  
Breno Herculano 62'  
  62' Vítor Martelo
  62' Matheus Pranke
  62' A. Pérez
  62' Rivaldo Semedo
  62' Tiago Paulos
  62' Xande
Fábio Santos 70' 2 - 1  
  71' Matheus Pranke
  77' André Galacho
Lucas Bridey 79'  
Fonseca Nicolau Rocha Biai 79'  
  2 - 2 80' Xande
  82' Roberto Carlos Gonçalves Pereira
  82' Gonçalo Maximino Farinha
J. Amoah 85'  
Bruno Gomes 85'  
  85' Marcos Soares
  85' Miguel Mangerico
28/04/2019 Moura
5 - 1
Armacenenses 0-0H2H+
Pedro Diniz 24' 1 - 0  
  31' Bruno Torres
Patrick Nephi Igwe 34' 2 - 0  
  46' Yaggo Gomes
  46' Wellington Júnior
  46' Bruno Torres
  46' Diogo Melo
  2 - 1 46' Wellington Júnior
J. Amoah 50' 3 - 1  
Igor Baldé 52' 4 - 1  
Patrick Nephi Igwe 55' 5 - 1  
  59' Tommy Batista
  59' Miguel Silva
  61' Elvis Mendes
Erico Júnior 72'  
Isaias Cruz 72'  
Pedro Diniz 77'  
Kaina 77'  
J. Amoah 83'  
Ricardo Machado 83'  
07/04/2019 Angrense
2 - 2
Moura 0-1H2H+
  30' Simão Júnior
  30' Vasco Teixeira
  0 - 1 45' Miguel Abreu
Miguel Oliveira 45'  
  45+1'
Carlos Silveira 53'  
Miguel Varela 53'  
Ricardo Queirós 54' 1 - 1  
  55' Erico Júnior
  55' Isaias Cruz
Ricardo Queirós 58' 2 - 1  
  60' Kaina
  60' Pedro Diniz
  2 - 2 68' Pedro Diniz
  73' Jeferson Souza
  82' Miguel Abreu
Rúben Miranda 82'  
  86' Guilherme Silva
  86' J. Amoah
Jordanes Medeiros 86'  
  90' Pedro Diniz
  90' Antoninho Silva
Armando Vasconcelos 90'  
03/03/2019 Moura
1 - 2
Praiense 0-0H2H+
  0 - 1 28' Danny Esteves
Daniel Andrade 31'  
  40' Diogo Careca
Patrick Nephi Igwe 41' 1 - 1  
  1 - 2 60' Diogo Fonseca
Patrick Nephi Igwe 61'  
  66' Paulo Teles
  66' Kiko Sousa
Guilherme Silva 69'  
J. Amoah 69'  
Kaina 69'  
Isaias Cruz 69'  
  72' Vladimir Forbs
  72' Celso Raposo
  76' Danny Esteves
  76' Diogo Fonseca
  76' Cristiano Magina
Bruno Gomes 81'  
Pedro Diniz 81'  
03/02/2019 Redondense
2 - 3
Moura 0-0H2H+
Kelvin 40' 1 - 0  
Nuno Cidade 42'  
Potchi 42' 2 - 0  
Luís Curado 46'  
  2 - 1 60' J. Amoah
  62' Igor Baldé
Farrapa 67'  
Tiago Paulos 67'  
  2 - 2 68' Daniel Andrade
  2 - 3 71' Miguel Abreu
  72' Guilherme Silva
  72' Antoninho Silva
  78' Kaina
  78' Pedro Diniz
Vítor Borrego 78'  
Lincoln 78'  
Luís Curado 78'  
Miguel Soares 78'  
  89' Patrick Nephi Igwe
  89' Simão Júnior
13/01/2019 Olhanense
3 - 1
Moura 3-0H2H+
Mohcine Hassan 23' 1 - 0  
Gabriel Silva 27' 2 - 0  
  40' Simão Júnior
  40' Mamadi
Caleb 45' 3 - 0  
  51' Daniel Coutinho
  58' J. Amoah
Miguel Campos 64'  
Fábio Pereira 64'  
  65' Daniel Coutinho
  65' Pedro Diniz
  3 - 1 66' Pedro Diniz
  69' Daniel Andrade
  74' Antoninho Silva
  74' Bruno Gomes
Lucas Salinas 75'  
Sapara 75'  
  84' Tó Miguel
Mohcine Hassan 89'  
Ailton Tavares 89'  
02/12/2018 Oriental Lisboa
2 - 1
Louletano 0-1H2H+
David Crespo 13'  
  0 - 1 23' Thiago Nonato
Leonardo Ferreira 30'  
  37' Hélio Pinto
  37' Ricardo Alves
Fábio Arcanjo 38'  
  54' Caio Alan
David Crespo 55'  
Henrique Gomes 55'  
Luís Lucas 63' 1 - 1  
Fábio Arcanjo 67'  
Rúben Marques 67'  
  70' Thiago Nonato
  74' J. Amoah
Rúben Gouveia 77'  
Márcio Augusto 77'  
  79' Marocas
  79' Luís Canina
João Damil 81'  
Rúben Marques 90' 2 - 1  
  90' J. Amoah
  90' Afonso Calvinho
Nélson Landim 90'  
Ruizinho 90'  
04/11/2018 Louletano
0 - 1
Olimpico do Montijo 0-0H2H+
Wilson Kenidy 61'  
Afonso Calvinho 61'  
Hélio Pinto 70'  
J. Amoah 70'  
  70' I. Boakye
  70' Ednilson Furtado
  0 - 1 79' Cami
  80' Cami
  80' Carlos Bebé
Banguelê 82'  
Marocas 82'  
  90' José Lúcio
  90' Bruno Jesus
14/10/2018 Louletano
1 - 1
Real 0-1H2H+
Ivo Nicolau 38'  
  0 - 1 45' Paulinho
Rogério Mesquita 61'  
Lucas 61'  
  63' Sabry
  63' Hugo Machado
  73' Diogo David
  73' Abou Touré
Hélio Pinto 77'  
J. Amoah 77'  
  78' Rodrigo Moitas
Filipe Garcia 82'  
Luís Canina 82'  
Hayner 83' 1 - 1  
  83' Rodrigo Moitas
  83' Fábio Freire
  90' Sandro Silva
02/09/2018 1º Dezembro
0 - 0
Louletano 0-0H2H+
Serge Guy Brou 64'  
Yair Castro Rodriguez 64'  
  70' Banguelê
Luisinho 75'  
  76' Hugo Faria
  78' Luís Zambujo
  78' Hayner
Diogo Marques 78'  
Alexandre Sousa 81'  
Luís Roliz 81'  
  90' Rogério Mesquita
  90' J. Amoah
Yordan Loaiza 90'  
Ruizinho 90'  
04/04/2018 Moncarapachense
1 - 3
Moura 0-1H2H+
Matt Oduaran 12'  
Diogo Romeiro 12'  
  0 - 1 24' J. Amoah
Fábio Marques 39'  
J. Bonilla 55'  
Márcio Sousa 57'  
Januario Jesus 57'  
J. Bonilla 61' 1 - 1  
  1 - 2 69' Miguel Lopes
Daniel 84'  
André Uva 84'  
  86' J. Amoah
  86' Bryan Botuly Bepaly
  90' Miguel Lopes
  90' Walter Figueira
  1 - 3 90+2' Walter Figueira
  90+3' Bamoussa Cissé
  90+3' P. Mouasso
04/04/2018 Moncarapachense
1 - 3
Moura 0-1H2H+
Matt Oduaran 12'  
Diogo Romeiro 12'  
  0 - 1 24' Joseph Amoah
Fábio Marques 39'  
Julián Bonilla 55'  
Márcio Sousa 57'  
Januario Jesus 57'  
Julián Bonilla 61' 1 - 1  
  1 - 2 69' Miguel Lopes
Daniel 84'  
André Uva 84'  
  86' Joseph Amoah
  86' Bryan Botuly Bepaly
  90' Miguel Lopes
  90' Walter Figueira
  1 - 3 90+2' Walter Figueira
  90+3' Bamoussa Cissé
  90+3' Paul-Henry Moussinga Mouasso
25/03/2018 Moura
4 - 1
Estrela Vendas Novas 2-0H2H+
Joseph Amoah 7' 1 - 0  
Joseph Amoah 24' 2 - 0  
  55' Gonçalo Serrano
  55' Takeshi Hosaki
  2 - 1 61' Serginho Machuqueiro
Bryan Botuly Bepaly 65'  
Drogba Camará 65'  
Bruno Jesus 71'  
  74' Alexandre Serafim
  74' Edward Sarpong
Bamoussa Cissé 80'  
Walter Figueira 80'  
Nuno Roque 85' 3 - 1  
  85' António Podstawski
  85' Cláudio Neves
Joseph Amoah 86'  
Paul-Henry Moussinga Mouasso 86'  
Drogba Camará 90' 4 - 1  
25/03/2018 Moura
4 - 1
Estrela Vendas Novas 2-0H2H+
J. Amoah 7' 1 - 0  
J. Amoah 24' 2 - 0  
  55' Gonçalo Serrano
  55' T. Hosaki
  2 - 1 61' Serginho Machuqueiro
Bryan Botuly Bepaly 65'  
Drogba Camará 65'  
Bruno Jesus 71'  
  74' Alexandre Serafim
  74' E. Sarpong
Bamoussa Cissé 80'  
Walter Figueira 80'  
Nuno Roque 85' 3 - 1  
  85' António Podstawski
  85' Cláudio Neves
J. Amoah 86'  
P. Mouasso 86'  
Drogba Camará 90' 4 - 1  

Results and Fixtures
Top Soccer Tipsters
Tipsters Competition Review
Superior H2H Statistics
H2H Home Team Advantage
H2H Away Team Advantage
Top Football Clubs
Worst Football Clubs
Top Draw Teams
Good Home Teams
Poor Away Teams
Platinum Membership Testimonial

Soccer Fixtures Calendar

Choose a date to view the past soccer results or upcoming match fixtures.

Pick a Country or Region

Get the listings of soccer leagues and competitions for each region, including past seasons results and football statistics.

Match Preview and News

Copyright © 2002-2025 SoccerPunter Pte. Ltd. All rights reserved.