uses hashes for initializing params, makes it easier to override any one