update: gateway pattern