Algorithms
Your physics algorithms are a little off. You'll need to take into account surface friction on round objects. I was stopped at a point in the game where a ball (the black one) had to be removed from the map, yet it was crawling at a constant rate (VERY SLOWLY) until it rolled off the map, 10 minutes later.
You should either take into account, a surface friction algorithm for rounded objects, or set a TTL (Time to Live) on objects so that they eventually HAVE to stop after, I'd say 30 seconds.
Otherwise, you're on the right track!
from a fellow programmer and engine designer :)