Refactor play and play_multicore function arguments

Instead of a fixed number of arguments, it now accepts a dictionary
containing all the details needed for the function.
Update TODO