Add default arg
Tidy up horrible gnarly trait and add a test