implement animation system