change getCharacters to use promises