add incremental mass recalculation

should solve #151 better than recalculating only once per frame :)

there is also a test to verify that the recalculation should be correct