Added some flexible arguments to keep it DRY