Refactor the base FilePlayer implementation