update: utilize dirname()