smooth animation with Delegate