Sources are objects that emit sound. Especially in 3D games, these emitters often correspond to existing game objects. It is therefore likely that elements like position en velocity could be taken from that game object directly. Finding an interface from which these objects can inherit, while still providing the functionality, would be desirable. Due to the required logic, an abstract class is a more likely solution.