extract methods into a 'playable' mixin