use loader to reduce coupling