A computing device, comprising: at least one processor; memory including instructions that, when executed by the at least one processor that when executed provide: a first hardware interface, of a plurality of hardware interfaces, the first hardware interface configured to accept motion data from a motion sensor; a second hardware interface, of the plurality of hardware interfaces, the second hardware interface configured to accept image data from a camera; a synchronizer configured to: receive and store the motion data from the first hardware interface; receive the image data from the second hardware interface; generate a data object based at least in part on motion data generated during a first time period between a previous frame of image data and a next frame of image data, and said next frame of image data generated at the end of the first time period; an engine for processing the data object to generate input data corresponding to at least a location of a head and a motion of the computing device; an event publisher configured to filter the input data to produce first filtered input data and publish the first filtered input data as first event data to a listener client executing on the computing device, the listener client registered to receive the first event data; and an event provider configured to filter the input data to produce second filtered input data and provide the second filtered input data as second event data in response to a polling request from a pull client executing on the computing device, wherein the listener client and the pull client are enabled to determine at least one of a change in head position or a gesture based at least in part upon at least one of the first event data or the second event data. at least one processor; memory including instructions that, when executed by the at least one processor that when executed provide: a first hardware interface, of a plurality of hardware interfaces, the first hardware interface configured to accept motion data from a motion sensor; a second hardware interface, of the plurality of hardware interfaces, the second hardware interface configured to accept image data from a camera; a synchronizer configured to: receive and store the motion data from the first hardware interface; receive the image data from the second hardware interface; generate a data object based at least in part on motion data generated during a first time period between a previous frame of image data and a next frame of image data, and said next frame of image data generated at the end of the first time period; an engine for processing the data object to generate input data corresponding to at least a location of a head and a motion of the computing device; an event publisher configured to filter the input data to produce first filtered input data and publish the first filtered input data as first event data to a listener client executing on the computing device, the listener client registered to receive the first event data; and an event provider configured to filter the input data to produce second filtered input data and provide the second filtered input data as second event data in response to a polling request from a pull client executing on the computing device, wherein the listener client and the pull client are enabled to determine at least one of a change in head position or a gesture based at least in part upon at least one of the first event data or the second event data. a first hardware interface, of a plurality of hardware interfaces, the first hardware interface configured to accept motion data from a motion sensor; a second hardware interface, of the plurality of hardware interfaces, the second hardware interface configured to accept image data from a camera; a synchronizer configured to: receive and store the motion data from the first hardware interface; receive the image data from the second hardware interface; generate a data object based at least in part on motion data generated during a first time period between a previous frame of image data and a next frame of image data, and said next frame of image data generated at the end of the first time period; receive and store the motion data from the first hardware interface; receive the image data from the second hardware interface; generate a data object based at least in part on motion data generated during a first time period between a previous frame of image data and a next frame of image data, and said next frame of image data generated at the end of the first time period; an engine for processing the data object to generate input data corresponding to at least a location of a head and a motion of the computing device; an event publisher configured to filter the input data to produce first filtered input data and publish the first filtered input data as first event data to a listener client executing on the computing device, the listener client registered to receive the first event data; and an event provider configured to filter the input data to produce second filtered input data and provide the second filtered input data as second event data in response to a polling request from a pull client executing on the computing device, wherein the listener client and the pull client are enabled to determine at least one of a change in head position or a gesture based at least in part upon at least one of the first event data or the second event data.