Shouldn't we check if initialize() exists before calling it? (same for play() below and all other object functionality that might not be implemented)