require 3 args and formatting