@jcredding support optional defaults hash here?