correctly implement defaults