added argument-driven functions