Comunicação entre Atividade e Serviço

Eu estou tentando fazer meu próprio MusicPlayer para android. Onde eu cheguei a um problema está executando algumas coisas em segundo plano. A atividade principal gerencia a GUI e até agora todas as músicas estão sendo reproduzidas. Eu queria separar as aulas de GUI e de música. Eu quero colocar parte de gerenciamento de música no serviço e deixar outras coisas como elas são agora.

Meu problema é que não consigo organizar a comunicação entre Atividade e Serviço, pois muita comunicação está acontecendo entre eles, incluindo objetos em movimento nas duas direções. Eu tentei muitas técnicas que eu procurei aqui no Stack Overflow, mas toda vez que tive problemas. Eu preciso do Service para poder enviar objetos para Activity e vice-versa. Quando eu adiciono o widget, também quero que ele seja capaz de se comunicar com o Serviço.

Todas as dicas são bem-vindas, se você precisar de um comentário sobre o código-fonte abaixo, mas agora, nessa transição, ele se tornou caótico.

Existe algum tutorial mais avançado sobre isso do que chamar um método que retorna um número aleatório de serviço? : P

EDIT: Possível solução é usar biblioteca RoboGuice e mover objetos com injeção

questionAnswers(9)

yourAnswerToTheQuestion