changed extension methods to be optional parameters as opposed to anoymous types