Changed Duration API.
Hiding internal functionality.
Added unit tests to verify natural duration is calced properly. Also ensures animations correctly change target object.