only perform setup once