works for both direct and FA