-/*! @method title:
- * @abstract Returns the title of the plugin, which should be player name.
- * @result An NSString containing the title.
- */
-- (NSString *)title;
-
-/*! @method description:
- * @abstract Returns a description of the remote.
- * @result An NSString containing the description.
- */
-- (NSString *)information;
-
-/*! @method icon:
- * @abstract Returns a icon for the remote.
- * @result An NSImage containing the icon.
- */
-- (NSImage *)icon;
-
-/*! @method begin:
- * @abstract Sent when the plugin should begin operation.
- * @result A result code signifying success.
- */
-- (BOOL)begin;
-
-/*! @method halt:
- * @abstract Sent when the plugin should cease operation.
- * @result A result code signifying success.
- */
-- (BOOL)halt;
-
-/*! @method isAppRunning:
- * @abstract Returns controlled application's running status (is or isn't running).
- * @result BOOL of the controlled application's running status.
- */
-- (BOOL)isAppRunning;
-
-/*! @method playerState:
- * @abstract Returns controlled application's playing state.
- * @result ITMTRemotePlayerState of the controlled application's playing state.
- */
-- (ITMTRemotePlayerState)playerState;
+- (id)valueOfProperty:(ITMTRemoteProperty)property;
+
+- (NSDictionary *)propertiesAndValues;
+
+- (ITMTPlayerStyle)playerStyle;
+
+- (BOOL)activate;
+- (BOOL)deactivate;
+
+- (ITMTPlayer *)currentPlayer;
+- (BOOL)selectPlayer:(ITMTPlayer *)player;
+- (NSArray *)players;
+@end
+
+@interface ITMTRemote : NSObject <ITMTRemote>
+@end
+
+/*!
+ @protocol ITMTPlayer
+ @abstract Object representation for a controlled player.
+ @discussion Object representation for a controlled player. Players can be defined as things that control playlist(s) objects, a pool of track objects, and possibly, equalizer objects.
+*/
+@protocol ITMTPlayer
+- (BOOL)writable;
+
+- (BOOL)show;
+
+- (BOOL)setValue:(id)value forProperty:(ITMTGenericProperty)property;
+- (id)valueOfProperty:(ITMTGenericProperty)property;
+- (NSDictionary *)propertiesAndValues;
+
+- (ITMTRemote *)remote;
+
+- (ITMTPlaylist *)currentPlaylist;
+- (BOOL)selectPlaylist:(ITMTPlaylist *)playlist;
+- (ITMTTrack *)currentTrack;
+- (BOOL)selectTrack:(ITMTTrack *)track;
+- (ITMTEqualizer *)currentEqualizer;
+- (BOOL)selectEqualizer:(ITMTEqualizer *)equalizer;