Lots of work into making it read from api