Repository: econ-ark/HARK (language: python)

Issue:
PEP 8 compliant notation/names
Originally in #857 

The current standard for notation has been defined by NARK, which specifies the translation of mathematical notation into strings. This has complicated the adherence to Python notational conventions because these notational strings have been used as Python variable names. _This is changing as of 0.10.8: now these strings are being used as keys in namespaces for model variable values and so on._

That creates an opportunity to streamline the 'mathematical notation' elements of HARK, with a couple of possibilities:

- Removing Now and Prev from model variable names
- reconsider the use of mattNwhiteCase for math variable names
PEP 8 compliant notation/names
Originally in #857 

The current standard for notation has been defined by NARK, which specifies the translation of mathematical notation into strings. This has complicated the adherence to Python notational conventions because these notational strings have been used as Python variable names. _This is changing as of 0.10.8: now these strings are being used as keys in namespaces for model variable values and so on._

That creates an opportunity to streamline the 'mathematical notation' elements of HARK, with a couple of possibilities:

- Removing Now and Prev from model variable names
- reconsider the use of mattNwhiteCase for math variable names


Discussion / hints:
`EndOfPrdvPP` -> `end_of_prd_vpp` ?
The first step on this which is:
 - turn Python code to PEP 8 style
 -  _except_ for the explicit mathematical terms, which are in NARK


Didn’t we already run black against the codebase? (Or am I just imagining
it)

On Fri 12. Feb 2021 at 16:37, Sebastian Benthall <notifications@github.com>
wrote:

> The first step on this which is:
>
>    - turn Python code to PEP 8 style
>    - *except* for the explicit mathematical terms, which are in NARK
>
> —
> You are receiving this because you are subscribed to this thread.
> Reply to this email directly, view it on GitHub
> <https://github.com/econ-ark/HARK/issues/907#issuecomment-778267280>, or
> unsubscribe
> <https://github.com/notifications/unsubscribe-auth/ABI5RFGMLGP3CTEEQVAGLLDS6VDKHANCNFSM4V7RQVAA>
> .
>

We did. The main thing that is out of compliance is the use of CamelCase instead of snake_case in a lot of places.
black does not check for that.
Ah yeah! But I remember Matt/Chris having strong opinions against it?
I believe Matt original objected but has changed his mind since.

I was just on a call with Chris where I confirmed with him this plan.

This has been discussed in this EEP:

https://github.com/econ-ark/governance/issues
Actually, this seems like a good instance for actually using the EEP
process and taking it all the way to completion.  Especially to get Matt's
sign-off.

What Seb proposed today was basically to keep the non-PEP8 names for
mathematical objects, but move toward pep8ish names for purely programming
objects.

That sounded reasonable to me, but I guess it would be good to have its
meaning fleshed out a bit.

In particular, does this proposal involve renaming all of the model
classes?  Like, ConsIndShockModel, etc?  Basically, that would break every
single thing in the entire codebase.  I'm not sure I'm on board for that,
two weeks before we want to announce HARK 1.0.  At a minimum, I'd want to
be certain that everything we have is successfully pinned to a previous
release of HARK and makes sure that release is the one that gets used.



On Fri, Feb 12, 2021 at 12:02 PM Sebastian Benthall <
notifications@github.com> wrote:

> I believe Matt original objected but has changed his mind since.
>
> I was just on a call with Chris where I confirmed with him this plan.
>
> This has been discussed in this EEP:
>
> https://github.com/econ-ark/governance/issues
>
> —
> You are receiving this because you are subscribed to this thread.
> Reply to this email directly, view it on GitHub
> <https://github.com/econ-ark/HARK/issues/907#issuecomment-778317170>, or
> unsubscribe
> <https://github.com/notifications/unsubscribe-auth/AAKCK73YT55YEWWN3K3DXKTS6VNLPANCNFSM4V7RQVAA>
> .
>


-- 
- Chris Carroll

> In particular, does this proposal involve renaming all of the model classes?

No it does not.

Please see the discussion of this in the EEP.

https://github.com/econ-ark/governance/issues/5#issuecomment-656888010
I'm confused.  

I looked in the EEP.  It says:

PEP8 is opinionated. The format of the names should match the programming role of the object.

Class names: CapWordsStyle aka CamelCase
Function and variable names: lower_case_with_internal_underscores
Class method names: same as functions


OK, so ConsIndShockModel.py is a package, and not any of these things.  

But could you clarify whether when you said that we were going to leave alone "mathematical objects" did you mean for example ConsumerSolution etc?  And the function defValueFuncs?  

If not, what ARE some specific examples of things you'd like to change and about which you think there might be some controversy?

`ConsumerSolution` and `IndShockConsumerType` are the names of class names. As they are in CapWordsStyle, they would be _unchanged_ in my proposal.

The function `defValueFuncs` is a function name. To be compliant with PEP 8, this would need to be changed to lower_case_with_underscores. For example, it could become `def_value_funcs`.

I am certainly _not_ trying to make a controversial proposal. I am trying to make a proposal that will move us closer to PEP 8 compliance while acknowledging the limited time available before the 1.0 release.

An example of something that might be "left alone" is `updateRiskyDstn`. `RiskyDstn` is a term for a mathematical entity.
I could see a case for making it `update_RiskyDstn`, but would not insist on it at all.
Is `ValueFuncs` a mathematical name, i.e specified in NARK?
In that case it is a bad example of a function that would be changed.

A better example: `prepareToSolve` -> `prepare_to_solve`
`EndOfPrdvPP` -> `end_of_prd_vpp` ?
The first step on this which is:
 - turn Python code to PEP 8 style
 -  _except_ for the explicit mathematical terms, which are in NARK


Didn’t we already run black against the codebase? (Or am I just imagining
it)

On Fri 12. Feb 2021 at 16:37, Sebastian Benthall <notifications@github.com>
wrote:

> The first step on this which is:
>
>    - turn Python code to PEP 8 style
>    - *except* for the explicit mathematical terms, which are in NARK
>
> —
> You are receiving this because you are subscribed to this thread.
> Reply to this email directly, view it on GitHub
> <https://github.com/econ-ark/HARK/issues/907#issuecomment-778267280>, or
> unsubscribe
> <https://github.com/notifications/unsubscribe-auth/ABI5RFGMLGP3CTEEQVAGLLDS6VDKHANCNFSM4V7RQVAA>
> .
>

We did. The main thing that is out of compliance is the use of CamelCase instead of snake_case in a lot of places.
black does not check for that.
Ah yeah! But I remember Matt/Chris having strong opinions against it?
I believe Matt original objected but has changed his mind since.

I was just on a call with Chris where I confirmed with him this plan.

This has been discussed in this EEP:

https://github.com/econ-ark/governance/issues
Actually, this seems like a good instance for actually using the EEP
process and taking it all the way to completion.  Especially to get Matt's
sign-off.

What Seb proposed today was basically to keep the non-PEP8 names for
mathematical objects, but move toward pep8ish names for purely programming
objects.

That sounded reasonable to me, but I guess it would be good to have its
meaning fleshed out a bit.

In particular, does this proposal involve renaming all of the model
classes?  Like, ConsIndShockModel, etc?  Basically, that would break every
single thing in the entire codebase.  I'm not sure I'm on board for that,
two weeks before we want to announce HARK 1.0.  At a minimum, I'd want to
be certain that everything we have is successfully pinned to a previous
release of HARK and makes sure that release is the one that gets used.



On Fri, Feb 12, 2021 at 12:02 PM Sebastian Benthall <
notifications@github.com> wrote:

> I believe Matt original objected but has changed his mind since.
>
> I was just on a call with Chris where I confirmed with him this plan.
>
> This has been discussed in this EEP:
>
> https://github.com/econ-ark/governance/issues
>
> —
> You are receiving this because you are subscribed to this thread.
> Reply to this email directly, view it on GitHub
> <https://github.com/econ-ark/HARK/issues/907#issuecomment-778317170>, or
> unsubscribe
> <https://github.com/notifications/unsubscribe-auth/AAKCK73YT55YEWWN3K3DXKTS6VNLPANCNFSM4V7RQVAA>
> .
>


-- 
- Chris Carroll

> In particular, does this proposal involve renaming all of the model classes?

No it does not.

Please see the discussion of this in the EEP.

https://github.com/econ-ark/governance/issues/5#issuecomment-656888010
I'm confused.  

I looked in the EEP.  It says:

PEP8 is opinionated. The format of the names should match the programming role of the object.

Class names: CapWordsStyle aka CamelCase
Function and variable names: lower_case_with_internal_underscores
Class method names: same as functions


OK, so ConsIndShockModel.py is a package, and not any of these things.  

But could you clarify whether when you said that we were going to leave alone "mathematical objects" did you mean for example ConsumerSolution etc?  And the function defValueFuncs?  

If not, what ARE some specific examples of things you'd like to change and about which you think there might be some controversy?

`ConsumerSolution` and `IndShockConsumerType` are the names of class names. As they are in CapWordsStyle, they would be _unchanged_ in my proposal.

The function `defValueFuncs` is a function name. To be compliant with PEP 8, this would need to be changed to lower_case_with_underscores. For example, it could become `def_value_funcs`.

I am certainly _not_ trying to make a controversial proposal. I am trying to make a proposal that will move us closer to PEP 8 compliance while acknowledging the limited time available before the 1.0 release.

An example of something that might be "left alone" is `updateRiskyDstn`. `RiskyDstn` is a term for a mathematical entity.
I could see a case for making it `update_RiskyDstn`, but would not insist on it at all.
Is `ValueFuncs` a mathematical name, i.e specified in NARK?
In that case it is a bad example of a function that would be changed.

A better example: `prepareToSolve` -> `prepare_to_solve`

Fix patch:
diff --git a/Documentation/CHANGELOG.md b/Documentation/CHANGELOG.md
index 835bc9def..013624543 100644
--- a/Documentation/CHANGELOG.md
+++ b/Documentation/CHANGELOG.md
@@ -14,6 +14,7 @@ Release Data: TBD
 
 #### Major Changes
 
+* Converts non-mathematical code to PEP8 compliant form [#953](https://github.com/econ-ark/HARK/pull/953)
 * Adds a constructor for LogNormal distributions from mean and standard deviation [#891](https://github.com/econ-ark/HARK/pull/891/)
 * Uses new LogNormal constructor in ConsPortfolioModel [#891](https://github.com/econ-ark/HARK/pull/891/)
 * calcExpectations method for taking the expectation of a distribution over a function [#884](https://github.com/econ-ark/HARK/pull/884/] (#897)[https://github.com/econ-ark/HARK/pull/897/)
diff --git a/Documentation/ConsumptionSavingModels.tex b/Documentation/ConsumptionSavingModels.tex
index acf6090c2..9004407bf 100644
--- a/Documentation/ConsumptionSavingModels.tex
+++ b/Documentation/ConsumptionSavingModels.tex
@@ -236,7 +236,7 @@ \subsection{Idiosyncratic and Aggregate Shocks to Income}
 
 The objects $\textbf{R}(\cdot)$ and $\textbf{W}(\cdot)$, are functions of the (effective) capital-to-labor ratio that yield the (net) interest factor and wage rate respectively.  As noted above, these are determined by the aggregate production function and the degree of capital depreciation.  The $\texttt{k}(\cdot)$ function represents the agent's beliefs about the evolution of the capital-to-labor ratio $k_t$.  As with idiosyncratic shocks, there is an aggregate shock process $(F_{\Theta},F_{\Psi})$.
 
-The one period problem of this model is solved by the function \texttt{solveConsAggShock}, the default value of \texttt{solveOnePeriod} for \texttt{AggShockConsumerType}.  The attributes required to specify an instance of this class are listed in the concordance below.
+The one period problem of this model is solved by the function \texttt{solveConsAggShock}, the default value of \texttt{solve_one_period} for \texttt{AggShockConsumerType}.  The attributes required to specify an instance of this class are listed in the concordance below.
 
 \begin{table}[h!]
 \centering
@@ -305,9 +305,9 @@ \subsection{Cobb-Douglas Economy}
 
 After a well-formed \texttt{CobbDouglasEconomy} has been created, its \texttt{agents} attribute can be populated with one or more instances of \texttt{AggShockConsumerType} (who have taken ``macro'' level information from the \texttt{CobbDouglasEconomy}).  A history of aggregate shocks can be created by invoking the \texttt{makeAggShkHist} method.  If each element of \texttt{AggShockConsumerType} has run its \texttt{makeIncShkHist} method to create a history of idiosyncratic income shocks (for many agents in each type), then the \texttt{CobbDouglasEconomy} can invoke its \texttt{solve} method.  This will search for a general equilibrium of the model, defined as a ``dynamic rule'' for the capital ratio $\textbf{k}(k_t)$ that is \textit{consistent}: when agents believe this $\textbf{k}(k_t)$ in their microeconomic problem, and the model is simulated for many periods, the resulting history of the capital ratio is consistent with that same dynamic rule.
 
-In the \texttt{Market} framework, the \texttt{millRule} for \texttt{CobbDouglasEconomy} gathers each agent's end-of-period normalized assets $a_t$ and permanent income $p_t$.  It aggregates wealth across all consumers into total capital, which it transforms into the capital-to-labor ratio.  It then uses the next aggregate shock values to calculate $\Rfree_t$ and $W_t$, which are distributed back to the consumers along with the aggregate shocks and new capital ratio, so that they can simulated another period.
+In the \texttt{Market} framework, the \texttt{mill_rule} for \texttt{CobbDouglasEconomy} gathers each agent's end-of-period normalized assets $a_t$ and permanent income $p_t$.  It aggregates wealth across all consumers into total capital, which it transforms into the capital-to-labor ratio.  It then uses the next aggregate shock values to calculate $\Rfree_t$ and $W_t$, which are distributed back to the consumers along with the aggregate shocks and new capital ratio, so that they can simulated another period.
 
-After generating a history of several thousand periods, the \texttt{CobbDouglasEconomy} can calculate a new dynamic rule for the capital ratio with its \texttt{calcDynamics} method.  The dynamics calculator simply throws out the first 200 periods of the history and runs a one-period-lag autoregression on the log capital ratio.  This generates a new function for \texttt{kNextFunc}, which is distributed to the consumer types in \texttt{agents} to re-solve their micro models.  This process continues until successive \texttt{kNextFunc}s are sufficiently close to consider the process converged (as determined by the \texttt{tolerance} attribute).
+After generating a history of several thousand periods, the \texttt{CobbDouglasEconomy} can calculate a new dynamic rule for the capital ratio with its \texttt{calc_dynamics} method.  The dynamics calculator simply throws out the first 200 periods of the history and runs a one-period-lag autoregression on the log capital ratio.  This generates a new function for \texttt{kNextFunc}, which is distributed to the consumer types in \texttt{agents} to re-solve their micro models.  This process continues until successive \texttt{kNextFunc}s are sufficiently close to consider the process converged (as determined by the \texttt{tolerance} attribute).
 
 
 \newpage
diff --git a/HARK/ConsumptionSaving/ConsAggShockModel.py b/HARK/ConsumptionSaving/ConsAggShockModel.py
index c88bad59d..4d68a20eb 100644
--- a/HARK/ConsumptionSaving/ConsAggShockModel.py
+++ b/HARK/ConsumptionSaving/ConsAggShockModel.py
@@ -28,14 +28,14 @@
     CRRAutilityP_inv,
     CRRAutility_invP,
     CRRAutility_inv,
-    makeGridExpMult,
+    make_grid_exp_mult,
 )
 from HARK.distribution import (
     MarkovProcess,
     MeanOneLogNormal,
     Uniform,
-    combineIndepDstns,
-    calcExpectation
+    combine_indep_dstns,
+    calc_expectation
 )
 from HARK.ConsumptionSaving.ConsIndShockModel import (
     ConsumerSolution,
@@ -150,9 +150,9 @@ def __init__(self, **kwds):
         # Add consumer-type specific objects, copying to create independent versions
         self.time_vary = deepcopy(IndShockConsumerType.time_vary_)
         self.time_inv = deepcopy(IndShockConsumerType.time_inv_)
-        self.delFromTimeInv("Rfree", "vFuncBool", "CubicBool")
+        self.del_from_time_inv("Rfree", "vFuncBool", "CubicBool")
 
-        self.solveOnePeriod = solveConsAggShock
+        self.solve_one_period = solveConsAggShock
         self.update()
 
     def reset(self):
@@ -167,12 +167,12 @@ def reset(self):
         -------
         None
         """
-        self.initializeSim()
+        self.initialize_sim()
         self.state_now['aLvlNow'] = self.kInit * np.ones(self.AgentCount)  # Start simulation near SS
         self.state_now['aNrm'] = self.state_now['aLvlNow'] / self.state_now['pLvl'] # ???
 
-    def preSolve(self):
-        #        AgentType.preSolve()
+    def pre_solve(self):
+        #        AgentType.pre_solve()
         self.updateSolutionTerminal()
 
     def updateSolutionTerminal(self):
@@ -239,7 +239,7 @@ def getEconomyData(self, economy):
         self.addAggShkDstn(
             economy.AggShkDstn
         )  # Combine idiosyncratic and aggregate shocks into one dstn
-        self.addToTimeInv(
+        self.add_to_time_inv(
             "Mgrid", "AFunc", "Rfunc", "wFunc", "DeprFac", "PermGroFacAgg"
         )
 
@@ -263,11 +263,11 @@ def addAggShkDstn(self, AggShkDstn):
         else:
             self.IncShkDstnWithoutAggShocks = self.IncShkDstn
         self.IncShkDstn = [
-            combineIndepDstns(self.IncShkDstn[t], AggShkDstn)
+            combine_indep_dstns(self.IncShkDstn[t], AggShkDstn)
             for t in range(self.T_cycle)
         ]
 
-    def simBirth(self, which_agents):
+    def sim_birth(self, which_agents):
         """
         Makes new consumers for the given indices.  Initialized variables include aNrm and pLvl, as
         well as time variables t_age and t_cycle.  Normalized assets and permanent income levels
@@ -282,7 +282,7 @@ def simBirth(self, which_agents):
         -------
         None
         """
-        IndShockConsumerType.simBirth(self, which_agents)
+        IndShockConsumerType.sim_birth(self, which_agents)
         if 'aLvl' in self.state_now and self.state_now['aLvl'] is not None:
             self.state_now['aLvl'][which_agents] = (
                 self.state_now['aNrm'][which_agents] * self.state_now['pLvl'][which_agents]
@@ -290,7 +290,7 @@ def simBirth(self, which_agents):
         else:
             self.state_now['aLvl'] = self.state_now['aNrm'] * self.state_now['pLvl']
 
-    def simDeath(self):
+    def sim_death(self):
         """
         Randomly determine which consumers die, and distribute their wealth among the survivors.
         This method only works if there is only one period in the cycle.
@@ -346,7 +346,7 @@ def getRfree(self):
         RfreeNow = self.RfreeNow * np.ones(self.AgentCount)
         return RfreeNow
 
-    def getShocks(self):
+    def get_shocks(self):
         """
         Finds the effective permanent and transitory shocks this period by combining the aggregate
         and idiosyncratic shocks of each type.
@@ -359,13 +359,13 @@ def getShocks(self):
         -------
         None
         """
-        IndShockConsumerType.getShocks(self)  # Update idiosyncratic shocks
+        IndShockConsumerType.get_shocks(self)  # Update idiosyncratic shocks
         self.shocks['TranShk'] = (
             self.shocks['TranShk'] * self.TranShkAggNow * self.wRteNow
         )
         self.shocks['PermShk'] = self.shocks['PermShk'] * self.PermShkAggNow
 
-    def getControls(self):
+    def get_controls(self):
         """
         Calculates consumption for each consumer of this type using the consumption functions.
 
@@ -496,8 +496,8 @@ def __init__(self, **kwds):
 
         self.shocks['Mrkv'] = None
 
-        self.addToTimeInv("MrkvArray")
-        self.solveOnePeriod = solveConsAggMarkov
+        self.add_to_time_inv("MrkvArray")
+        self.solve_one_period = solveConsAggMarkov
 
     def addAggShkDstn(self, AggShkDstn):
         """
@@ -515,7 +515,7 @@ def addAggShkDstn(self, AggShkDstn):
         for t in range(self.T_cycle):
             IncShkDstnOut.append(
                 [
-                    combineIndepDstns(self.IncShkDstn[t][n], AggShkDstn[n])
+                    combine_indep_dstns(self.IncShkDstn[t][n], AggShkDstn[n])
                     for n in range(N)
                 ]
             )
@@ -542,14 +542,14 @@ def updateSolutionTerminal(self):
         self.solution_terminal.vPfunc = StateCount * [self.solution_terminal.vPfunc]
         self.solution_terminal.mNrmMin = StateCount * [self.solution_terminal.mNrmMin]
 
-    def resetRNG(self):
-        MarkovConsumerType.resetRNG(self)
+    def reset_rng(self):
+        MarkovConsumerType.reset_rng(self)
 
-    def getShocks(self):
+    def get_shocks(self):
         """
         Gets permanent and transitory income shocks for this period.  Samples from IncShkDstn for
         each period in the cycle.  This is a copy-paste from IndShockConsumerType, with the
-        addition of the Markov macroeconomic state.  Unfortunately, the getShocks method for
+        addition of the Markov macroeconomic state.  Unfortunately, the get_shocks method for
         MarkovConsumerType cannot be used, as that method assumes that MrkvNow is a vector
         with a value for each agent, not just a single int.
 
@@ -602,7 +602,7 @@ def getShocks(self):
         self.shocks['TranShk'] = TranShkNow * self.TranShkAggNow * self.wRteNow
         self.shocks['PermShk'] = PermShkNow * self.PermShkAggNow
 
-    def getControls(self):
+    def get_controls(self):
         """
         Calculates consumption for each consumer of this type using the consumption functions.
         For this AgentType class, MrkvNow is the same for all consumers.  However, in an
@@ -706,10 +706,10 @@ def __init__(self, **kwds):
             "Mrkv" : None
         }
 
-        self.solveOnePeriod = solveKrusellSmith
+        self.solve_one_period = solveKrusellSmith
         self.update()
 
-    def preSolve(self):
+    def pre_solve(self):
         self.update()
         self.preComputeArrays()
 
@@ -757,7 +757,7 @@ def getEconomyData(self, Economy):
         self.MrkvAggArray = (
             Economy.MrkvArray
         )  # Transition probabilities among aggregate discrete states
-        self.addToTimeInv(
+        self.add_to_time_inv(
             "Mgrid",
             "AFunc",
             "DeprFac",
@@ -776,8 +776,8 @@ def makeGrid(self):
         Construct the attribute aXtraGrid from the primitive attributes aMin,
         aMax, aCount, aNestFac.
         """
-        self.aGrid = makeGridExpMult(self.aMin, self.aMax, self.aCount, self.aNestFac)
-        self.addToTimeInv("aGrid")
+        self.aGrid = make_grid_exp_mult(self.aMin, self.aMax, self.aCount, self.aNestFac)
+        self.add_to_time_inv("aGrid")
 
     def updateSolutionTerminal(self):
         """
@@ -852,7 +852,7 @@ def preComputeArrays(self):
         self.mNextArray = mNext
         self.MnextArray = Mnext_tiled
         self.RnextArray = Rnext_tiled
-        self.addToTimeInv("ProbArray", "mNextArray", "MnextArray", "RnextArray")
+        self.add_to_time_inv("ProbArray", "mNextArray", "MnextArray", "RnextArray")
 
     def makeEmpIdxArrays(self):
         """
@@ -971,23 +971,23 @@ def makeEmpIdxArrays(self):
         ]
 
     def reset(self):
-        self.initializeSim()
+        self.initialize_sim()
 
     def marketAction(self):
         self.simulate(1)
 
-    def initializeSim(self):
+    def initialize_sim(self):
         self.shocks['Mrkv'] = self.MrkvInit
-        AgentType.initializeSim(self)
+        AgentType.initialize_sim(self)
         self.state_now["EmpNow"] = self.state_now["EmpNow"].astype(bool)
         self.makeEmpIdxArrays()
 
-    def simBirth(self, which):
+    def sim_birth(self, which):
         """
         Create newborn agents with randomly drawn employment states.  This will
-        only ever be called by initializeSim() at the start of a new simulation
+        only ever be called by initialize_sim() at the start of a new simulation
         history, as the Krusell-Smith model does not have death and replacement.
-        The simDeath() method does not exist, as AgentType's default of "no death"
+        The sim_death() method does not exist, as AgentType's default of "no death"
         is the correct behavior for the model.
         """
         N = np.sum(which)
@@ -1009,7 +1009,7 @@ def simBirth(self, which):
         self.state_now["EmpNow"][which] = self.RNG.permutation(EmpNew)
         self.state_now["aNow"][which] = self.kInit
 
-    def getShocks(self):
+    def get_shocks(self):
         """
         Get new idiosyncratic employment states based on the macroeconomic state.
         """
@@ -1034,13 +1034,13 @@ def getShocks(self):
         EmpNow[employed] = self.RNG.permutation(emp_permute)
         EmpNow[unemployed] = self.RNG.permutation(unemp_permute)
 
-    def getStates(self):
+    def get_states(self):
         """
         Get each agent's idiosyncratic state, their household market resources.
         """
         self.state_now["mNow"] = self.Rnow * self.state_prev['aNow'] + self.Wnow * self.LbrInd * self.state_now["EmpNow"]
 
-    def getControls(self):
+    def get_controls(self):
         """
         Get each agent's consumption given their current state.'
         """
@@ -1068,7 +1068,7 @@ def getControls(self):
         )
         self.controls["cNow"] = cNow
 
-    def getPostStates(self):
+    def get_poststates(self):
         """
         Gets each agent's retained assets after consumption.
         """
@@ -1286,7 +1286,7 @@ def solveConsAggShockNEW(solution_next, IncShkDstn, LivPrb, DiscFac, CRRA, PermG
     Solve one period of a consumption-saving problem with idiosyncratic and
     aggregate shocks (transitory and permanent).  This is a basic solver that
     can't handle cubic splines, nor can it calculate a value function. This
-    version uses calcExpectation to reduce code clutter.
+    version uses calc_expectation to reduce code clutter.
 
     Parameters
     ----------
@@ -1374,7 +1374,7 @@ def vPnextFunc(a,M,psi,theta,Psi,Theta):
     
     # Compute end-of-period marginal value of assets
     MaggNow = np.tile(np.reshape(Mgrid,(1,Mcount)),(aCount,1)) # Tiled Mgrid
-    EndOfPrdvP = DiscFac*LivPrb*calcExpectation(IncShkDstn,vPnextFunc,[aNrmNow,MaggNow])
+    EndOfPrdvP = DiscFac*LivPrb*calc_expectation(IncShkDstn,vPnextFunc,[aNrmNow,MaggNow])
 
     # Calculate optimal consumption from each asset gridpoint and endogenous m_t gridpoint
     cNrmNow = EndOfPrdvP**(-1.0/CRRA)
@@ -1896,7 +1896,7 @@ def __init__(self, agents=None, tolerance=0.0001, act_T=1200, **kwds):
         if not hasattr(self, "verbose"):
             self.verbose = True
 
-    def millRule(self, aLvl, pLvl):
+    def mill_rule(self, aLvl, pLvl):
         """
         Function to calculate the capital to labor ratio, interest factor, and
         wage rate based on each agent's current state.  Just calls calcRandW().
@@ -1905,7 +1905,7 @@ def millRule(self, aLvl, pLvl):
         """
         return self.calcRandW(aLvl, pLvl)
 
-    def calcDynamics(self, MaggNow, AaggNow):
+    def calc_dynamics(self, MaggNow, AaggNow):
         """
         Calculates a new dynamic rule for the economy: end of period savings as
         a function of aggregate market resources.  Just calls calcAFunc().
@@ -1995,7 +1995,7 @@ def makeAggShkDstn(self):
         self.PermShkAggDstn = MeanOneLogNormal(sigma=self.PermShkAggStd).approx(
             N=self.PermShkAggCount
         )
-        self.AggShkDstn = combineIndepDstns(self.PermShkAggDstn, self.TranShkAggDstn)
+        self.AggShkDstn = combine_indep_dstns(self.PermShkAggDstn, self.TranShkAggDstn)
 
     def reset(self):
         """
@@ -2199,7 +2199,7 @@ def __init__(self, agents=None, tolerance=0.0001, act_T=1000, **kwds):
             tolerance=tolerance,
             act_T=act_T,
         )
-        self.assignParameters(**kwds)
+        self.assign_parameters(**kwds)
         self.update()
 
     def update(self):
@@ -2249,9 +2249,9 @@ def makeAggShkDstn(self):
         self.PermShkAggDstn = MeanOneLogNormal(sigma=self.PermShkAggStd).approx(
             N=self.PermShkAggCount
         )
-        self.AggShkDstn = combineIndepDstns(self.PermShkAggDstn, self.TranShkAggDstn)
+        self.AggShkDstn = combine_indep_dstns(self.PermShkAggDstn, self.TranShkAggDstn)
 
-    def millRule(self):
+    def mill_rule(self):
         """
         No aggregation occurs for a small open economy, because the wage and interest rates are
         exogenously determined.  However, aggregate shocks may occur.
@@ -2260,7 +2260,7 @@ def millRule(self):
         """
         return self.getAggShocks()
 
-    def calcDynamics(self, KtoLnow):
+    def calc_dynamics(self, KtoLnow):
         """
         Calculates a new dynamic rule for the economy, which is just an empty object.
         There is no "dynamic rule" for a small open economy, because K/L does not generate w and R.
@@ -2504,7 +2504,7 @@ def makeAggShkDstn(self):
                     N=self.PermShkAggCount
                 )
             )
-            AggShkDstn.append(combineIndepDstns(PermShkAggDstn[-1], TranShkAggDstn[-1]))
+            AggShkDstn.append(combine_indep_dstns(PermShkAggDstn[-1], TranShkAggDstn[-1]))
 
         self.TranShkAggDstn = TranShkAggDstn
         self.PermShkAggDstn = PermShkAggDstn
@@ -2555,7 +2555,7 @@ def makeMrkvHist(self):
         """
         Makes a history of macroeconomic Markov states, stored in the attribute
         MrkvNow_hist.  This version ensures that each state is reached a sufficient
-        number of times to have a valid sample for calcDynamics to produce a good
+        number of times to have a valid sample for calc_dynamics to produce a good
         dynamic rule.  It will sometimes cause act_T to be increased beyond its
         initially specified level.
 
@@ -2651,7 +2651,7 @@ def makeMrkvHist(self):
         self.MrkvNow_hist = MrkvNow_hist
         self.act_T = act_T
 
-    def millRule(self, aLvl, pLvl):
+    def mill_rule(self, aLvl, pLvl):
         """
         Function to calculate the capital to labor ratio, interest factor, and
         wage rate based on each agent's current state.  Just calls calcRandW()
@@ -2779,13 +2779,13 @@ def update(self):
     def makeAggShkDstn(self):
         CobbDouglasMarkovEconomy.makeAggShkDstn(self)
 
-    def millRule(self):
+    def mill_rule(self):
         MrkvNow = self.MrkvNow_hist[self.Shk_idx]
         temp = SmallOpenEconomy.getAggShocks(self)
         temp(MrkvNow=MrkvNow)
         return temp
 
-    def calcDynamics(self, KtoLnow):
+    def calc_dynamics(self, KtoLnow):
         return MetricObject()
 
     def makeAggShkHist(self):
@@ -2965,7 +2965,7 @@ def makeMrkvHist(self):
             MrkvNow = markov_process.draw(MrkvNow)
 
 
-    def millRule(self, aNow, EmpNow):
+    def mill_rule(self, aNow, EmpNow):
         """
         Method to calculate the capital to labor ratio, interest factor, and
         wage rate based on each agent's current state.  Just calls calcRandW().
@@ -2988,7 +2988,7 @@ def millRule(self, aNow, EmpNow):
 
         return self.calcRandW(aNow, EmpNow)
 
-    def calcDynamics(self, Mnow, Aprev):
+    def calc_dynamics(self, Mnow, Aprev):
         """
         Method to update perceptions of the aggregate saving rule in each
         macroeconomic state; just calls calcAFunc.
diff --git a/HARK/ConsumptionSaving/ConsGenIncProcessModel.py b/HARK/ConsumptionSaving/ConsGenIncProcessModel.py
index 2d041f213..1ed8157f5 100644
--- a/HARK/ConsumptionSaving/ConsGenIncProcessModel.py
+++ b/HARK/ConsumptionSaving/ConsGenIncProcessModel.py
@@ -10,7 +10,7 @@
 from builtins import range
 from copy import deepcopy
 import numpy as np
-from HARK import AgentType, MetricObject, makeOnePeriodOOSolver
+from HARK import AgentType, MetricObject, make_one_period_oo_solver
 from HARK.distribution import DiscreteDistribution
 from HARK.interpolation import (
     LowerEnvelope2D,
@@ -32,7 +32,7 @@
     CRRAutility_invP,
     CRRAutility_inv,
     CRRAutilityP_invP,
-    getPercentiles,
+    get_percentiles,
 )
 from HARK.distribution import Lognormal, Uniform
 from HARK.ConsumptionSaving.ConsIndShockModel import (
@@ -911,7 +911,7 @@ def __init__(self, cycles=0, **kwds):
 
         # Initialize a basic ConsumerType
         IndShockConsumerType.__init__(self, cycles=cycles, **params)
-        self.solveOnePeriod = makeOnePeriodOOSolver(ConsGenIncProcessSolver)
+        self.solve_one_period = make_one_period_oo_solver(ConsGenIncProcessSolver)
 
         # a poststate?
         self.state_now['aLvl'] = None
@@ -921,8 +921,8 @@ def __init__(self, cycles=0, **kwds):
         self.state_now["mLvl"] = None
         self.state_prev["mLvl"] = None
 
-    def preSolve(self):
-        #        AgentType.preSolve()
+    def pre_solve(self):
+        #        AgentType.pre_solve()
         self.updateSolutionTerminal()
 
     def update(self):
@@ -982,7 +982,7 @@ def updatepLvlNextFunc(self):
         """
         pLvlNextFuncBasic = LinearInterp(np.array([0.0, 1.0]), np.array([0.0, 1.0]))
         self.pLvlNextFunc = self.T_cycle * [pLvlNextFuncBasic]
-        self.addToTimeVary("pLvlNextFunc")
+        self.add_to_time_vary("pLvlNextFunc")
 
     def installRetirementFunc(self):
         """
@@ -1036,7 +1036,7 @@ def updatepLvlGrid(self):
                 if t > 0:
                     PermShkNow = self.PermShkDstn[t - 1].draw(N=self.AgentCount)
                     pLvlNow = self.pLvlNextFunc[t - 1](pLvlNow) * PermShkNow
-                pLvlGrid.append(getPercentiles(pLvlNow, percentiles=self.pLvlPctiles))
+                pLvlGrid.append(get_percentiles(pLvlNow, percentiles=self.pLvlPctiles))
 
         # Calculate "stationary" distribution in infinite horizon (might vary across periods of cycle)
         elif self.cycles == 0:
@@ -1068,7 +1068,7 @@ def updatepLvlGrid(self):
             for t in range(self.T_cycle):
                 these = t_cycle == t
                 pLvlGrid.append(
-                    getPercentiles(pLvlNow[these], percentiles=self.pLvlPctiles)
+                    get_percentiles(pLvlNow[these], percentiles=self.pLvlPctiles)
                 )
 
         # Throw an error if cycles>1
@@ -1077,9 +1077,9 @@ def updatepLvlGrid(self):
 
         # Store the result and add attribute to time_vary
         self.pLvlGrid = pLvlGrid
-        self.addToTimeVary("pLvlGrid")
+        self.add_to_time_vary("pLvlGrid")
 
-    def simBirth(self, which_agents):
+    def sim_birth(self, which_agents):
         """
         Makes new consumers for the given indices.  Initialized variables include aNrm and pLvl, as
         well as time variables t_age and t_cycle.  Normalized assets and persistent income levels
@@ -1149,7 +1149,7 @@ def transition(self):
                 mLvlNow)
 
 
-    def getControls(self):
+    def get_controls(self):
         """
         Calculates consumption for each consumer of this type using the consumption functions.
 
@@ -1175,7 +1175,7 @@ def getControls(self):
         self.controls["cLvl"] = cLvlNow
         self.MPCnow = MPCnow
 
-    def getPostStates(self):
+    def get_poststates(self):
         """
         Calculates end-of-period assets for each consumer of this type.
         Identical to version in IndShockConsumerType but uses Lvl rather than Nrm variables.
@@ -1190,7 +1190,7 @@ def getPostStates(self):
         """
         self.state_now['aLvl'] = self.state_now["mLvl"] - self.controls["cLvl"]
         # moves now to prev
-        AgentType.getPostStates(self)
+        AgentType.get_poststates(self)
 
 
 ###############################################################################
@@ -1229,7 +1229,7 @@ def updatepLvlNextFunc(self):
             )
 
         self.pLvlNextFunc = pLvlNextFunc
-        self.addToTimeVary("pLvlNextFunc")
+        self.add_to_time_vary("pLvlNextFunc")
 
 
 ###############################################################################
@@ -1287,4 +1287,4 @@ def updatepLvlNextFunc(self):
             pLogMean += np.log(self.PermGroFac[t])
 
         self.pLvlNextFunc = pLvlNextFunc
-        self.addToTimeVary("pLvlNextFunc")
+        self.add_to_time_vary("pLvlNextFunc")
diff --git a/HARK/ConsumptionSaving/ConsIndShockModel.py b/HARK/ConsumptionSaving/ConsIndShockModel.py
index c44246a6b..65251b112 100644
--- a/HARK/ConsumptionSaving/ConsIndShockModel.py
+++ b/HARK/ConsumptionSaving/ConsIndShockModel.py
@@ -19,7 +19,7 @@
 from copy import copy, deepcopy
 import numpy as np
 from scipy.optimize import newton
-from HARK import AgentType, NullFunc, MetricObject, makeOnePeriodOOSolver
+from HARK import AgentType, NullFunc, MetricObject, make_one_period_oo_solver
 from HARK.utilities import warnings  # Because of "patch" to warnings modules
 from HARK.interpolation import (
     CubicInterp,
@@ -32,12 +32,12 @@
 from HARK.distribution import Lognormal, MeanOneLogNormal, Uniform
 from HARK.distribution import (
     DiscreteDistribution,
-    addDiscreteOutcomeConstantMean,
-    calcExpectation,
-    combineIndepDstns,
+    add_discrete_outcome_constant_mean,
+    calc_expectation,
+    combine_indep_dstns,
 )
 from HARK.utilities import (
-    makeGridExpMult,
+    make_grid_exp_mult,
     CRRAutility,
     CRRAutilityP,
     CRRAutilityPP,
@@ -759,7 +759,7 @@ def vp_next(shocks, a_nrm):
             self.DiscFacEff
             * self.Rfree
             * self.PermGroFac ** (-self.CRRA)
-            * calcExpectation(
+            * calc_expectation(
                 self.IncShkDstn,
                 vp_next,
                 self.aNrmNow
@@ -960,7 +960,7 @@ def vpp_next(shocks, a_nrm):
             * self.Rfree
             * self.Rfree
             * self.PermGroFac ** (-self.CRRA - 1.0)
-            * calcExpectation(
+            * calc_expectation(
                 self.IncShkDstn,
                 vpp_next,
                 self.aNrmNow
@@ -995,7 +995,7 @@ def v_lvl_next(shocks, a_nrm):
             shocks[0] ** (1.0 - self.CRRA)
             * self.PermGroFac ** (1.0 - self.CRRA)
             ) * self.vFuncNext(self.m_nrm_next(shocks, a_nrm))
-        EndOfPrdv = self.DiscFacEff * calcExpectation(
+        EndOfPrdv = self.DiscFacEff * calc_expectation(
             self.IncShkDstn, v_lvl_next, self.aNrmNow
         )
         EndOfPrdvNvrs = self.uinv(
@@ -1417,10 +1417,10 @@ def __init__(self, cycles=1, verbose=1, quiet=False, **kwds):
         self.shock_vars = deepcopy(self.shock_vars_)
         self.verbose = verbose
         self.quiet = quiet
-        self.solveOnePeriod = makeOnePeriodOOSolver(ConsPerfForesightSolver)
+        self.solve_one_period = make_one_period_oo_solver(ConsPerfForesightSolver)
         set_verbosity_level((4 - verbose) * 10)
 
-    def preSolve(self):
+    def pre_solve(self):
         self.updateSolutionTerminal()  # Solve the terminal period problem
 
         # Fill in BoroCnstArt and MaxKinks if they're not specified or are irrelevant.
@@ -1438,7 +1438,7 @@ def preSolve(self):
                     )
                 )
 
-    def checkRestrictions(self):
+    def check_restrictions(self):
         """
         A method to check that various restrictions are met for the model class.
         """
@@ -1486,12 +1486,12 @@ def unpackcFunc(self):
         )
         self.unpack("cFunc")
 
-    def initializeSim(self):
+    def initialize_sim(self):
         self.PermShkAggNow = self.PermGroFacAgg  # This never changes during simulation
         self.state_now['PlvlAgg'] = 1.0
-        AgentType.initializeSim(self)
+        AgentType.initialize_sim(self)
 
-    def simBirth(self, which_agents):
+    def sim_birth(self, which_agents):
         """
         Makes new consumers for the given indices.  Initialized variables include aNrm and pLvl, as
         well as time variables t_age and t_cycle.  Normalized assets and permanent income levels
@@ -1528,7 +1528,7 @@ def simBirth(self, which_agents):
         ] = 0  # Which period of the cycle each agent is currently in
         return None
 
-    def simDeath(self):
+    def sim_death(self):
         """
         Determines which agents die this period and must be replaced.  Uses the sequence in LivPrb
         to determine survival probabilities for each agent.
@@ -1556,7 +1556,7 @@ def simDeath(self):
             which_agents = np.logical_or(which_agents, too_old)
         return which_agents
 
-    def getShocks(self):
+    def get_shocks(self):
         """
         Finds permanent and transitory income "shocks" for each agent this period.  As this is a
         perfect foresight model, there are no stochastic shocks: PermShkNow = PermGroFac for each
@@ -1607,7 +1607,7 @@ def transition(self):
         return pLvlNow, PlvlAggNow, bNrmNow, mNrmNow, None
 
 
-    def getControls(self):
+    def get_controls(self):
         """
         Calculates consumption for each consumer of this type using the consumption functions.
 
@@ -1632,7 +1632,7 @@ def getControls(self):
         self.MPCnow = MPCnow
         return None
 
-    def getPostStates(self):
+    def get_poststates(self):
         """
         Calculates end-of-period assets for each consumer of this type.
 
@@ -1650,7 +1650,7 @@ def getPostStates(self):
         self.state_now['aLvl'] = self.state_now['aNrm'] * self.state_now['pLvl']
 
         # moves now to prev
-        super().getPostStates()
+        super().get_poststates()
 
         return None
 
@@ -1882,7 +1882,7 @@ def __init__(self, cycles=1, verbose=1, quiet=False, **kwds):
             solver = ConsIndShockSolverBasic
         else:  # Use the "advanced" solver if either is requested
             solver = ConsIndShockSolver
-        self.solveOnePeriod = makeOnePeriodOOSolver(solver)
+        self.solve_one_period = make_one_period_oo_solver(solver)
 
         self.update()  # Make assets grid, income process, terminal solution
 
@@ -1906,7 +1906,7 @@ def updateIncomeProcess(self):
         self.IncShkDstn = IncShkDstn
         self.PermShkDstn = PermShkDstn
         self.TranShkDstn = TranShkDstn
-        self.addToTimeVary("IncShkDstn", "PermShkDstn", "TranShkDstn")
+        self.add_to_time_vary("IncShkDstn", "PermShkDstn", "TranShkDstn")
 
     def updateAssetsGrid(self):
         """
@@ -1923,7 +1923,7 @@ def updateAssetsGrid(self):
         """
         aXtraGrid = constructAssetsGrid(self)
         self.aXtraGrid = aXtraGrid
-        self.addToTimeInv("aXtraGrid")
+        self.add_to_time_inv("aXtraGrid")
 
     def update(self):
         """
@@ -1941,12 +1941,12 @@ def update(self):
         self.updateAssetsGrid()
         self.updateSolutionTerminal()
 
-    def resetRNG(self):
+    def reset_rng(self):
         """
         Reset the RNG behavior of this type.  This method is called automatically
-        by initializeSim(), ensuring that each simulation run uses the same sequence
+        by initialize_sim(), ensuring that each simulation run uses the same sequence
         of random shocks; this is necessary for structural estimation to work.
-        This method extends AgentType.resetRNG() to also reset elements of IncShkDstn.
+        This method extends AgentType.reset_rng() to also reset elements of IncShkDstn.
 
         Parameters
         ----------
@@ -1956,14 +1956,14 @@ def resetRNG(self):
         -------
         None
         """
-        PerfForesightConsumerType.resetRNG(self)
+        PerfForesightConsumerType.reset_rng(self)
 
-        # Reset IncShkDstn if it exists (it might not because resetRNG is called at init)
+        # Reset IncShkDstn if it exists (it might not because reset_rng is called at init)
         if hasattr(self, "IncShkDstn"):
             for dstn in self.IncShkDstn:
                 dstn.reset()
 
-    def getShocks(self):
+    def get_shocks(self):
         """
         Gets permanent and transitory income shocks for this period.  Samples from IncShkDstn for
         each period in the cycle.
@@ -2106,13 +2106,13 @@ def makeEulerErrorFunc(self, mMax=100, approx_inc_dstn=True):
             TranShkDstn = MeanOneLogNormal(sigma=self.TranShkStd[0]).approx(
                 N=200, tail_N=50, tail_order=1.3, tail_bound=[0.05, 0.95]
             )
-            TranShkDstn = addDiscreteOutcomeConstantMean(
+            TranShkDstn = add_discrete_outcome_constant_mean(
                 TranShkDstn, self.UnempPrb, self.IncUnemp
             )
             PermShkDstn = MeanOneLogNormal(sigma=self.PermShkStd[0]).approx(
                 N=200, tail_N=50, tail_order=1.3, tail_bound=[0.05, 0.95]
             )
-            IncShkDstn = combineIndepDstns(PermShkDstn, TranShkDstn)
+            IncShkDstn = combine_indep_dstns(PermShkDstn, TranShkDstn)
 
         # Make a grid of market resources
         mNowMin = self.solution[0].mNrmMin + 10 ** (
@@ -2164,8 +2164,8 @@ def makeEulerErrorFunc(self, mMax=100, approx_inc_dstn=True):
         eulerErrorFunc = LinearInterp(mNowGrid, EulerErrorNrmGrid)
         self.eulerErrorFunc = eulerErrorFunc
 
-    def preSolve(self):
-        #        AgentType.preSolve(self)
+    def pre_solve(self):
+        #        AgentType.pre_solve(self)
         # Update all income process variables to match any attributes that might
         # have been changed since `__init__` or `solve()` was last called.
         #        self.updateIncomeProcess()
@@ -2243,7 +2243,7 @@ def checkFVAC(self, verbose=None):
         Evaluate and report on the Finite Value of Autarky Condition
         Hyperlink to paper: [url]/#Autarky-Value
         """
-        EpShkuInv = calcExpectation(
+        EpShkuInv = calc_expectation(
             self.PermShkDstn[0],
             lambda x: x ** (1 - self.CRRA)
         )
@@ -2307,7 +2307,7 @@ def checkConditions(self, verbose=None):
         # would be referenced below as:
         # [url]/#Uncertainty-Modified-Conditions
 
-        self.EPermShkInv = calcExpectation(
+        self.EPermShkInv = calc_expectation(
             self.PermShkDstn[0], lambda x : 1 / x
         )
         # $\Ex_{t}[\psi^{-1}_{t+1}]$ (in first eqn in sec)
@@ -2532,7 +2532,7 @@ def constructLognormalIncomeProcessUnemployment(self):
                     TranShkCount, tail_N=0
                 )
                 if UnempPrb > 0:
-                    TranShkDstn_t = addDiscreteOutcomeConstantMean(
+                    TranShkDstn_t = add_discrete_outcome_constant_mean(
                         TranShkDstn_t, p=UnempPrb, x=IncUnemp
                     )
                 PermShkDstn_t = MeanOneLogNormal(sigma=PermShkStd[t]).approx(
@@ -2541,7 +2541,7 @@ def constructLognormalIncomeProcessUnemployment(self):
                 ### REPLACE
                 ###REPLACE
                 IncShkDstn.append(
-                    combineIndepDstns(
+                    combine_indep_dstns(
                         PermShkDstn_t,
                         TranShkDstn_t,
                         seed=self.RNG.randint(0, 2 ** 31 - 1),
@@ -2591,11 +2591,11 @@ def __init__(self, cycles=1, **kwds):
         PerfForesightConsumerType.__init__(self, cycles=cycles, **params)
 
         # Add consumer-type specific objects, copying to create independent versions
-        self.solveOnePeriod = makeOnePeriodOOSolver(ConsKinkedRsolver)
+        self.solve_one_period = make_one_period_oo_solver(ConsKinkedRsolver)
         self.update()  # Make assets grid, income process, terminal solution
 
-    def preSolve(self):
-        #        AgentType.preSolve(self)
+    def pre_solve(self):
+        #        AgentType.pre_solve(self)
         self.updateSolutionTerminal()
 
     def calcBoundingValues(self):
@@ -2620,7 +2620,7 @@ def calcBoundingValues(self):
         PermShkValsNext = self.IncShkDstn[0][1]
         TranShkValsNext = self.IncShkDstn[0][2]
         ShkPrbsNext = self.IncShkDstn[0][0]
-        ExIncNext = calcExpectation(
+        ExIncNext = calc_expectation(
             IncShkDstn,
             lambda trans, perm : trans * perm
         )
@@ -2805,7 +2805,7 @@ def constructAssetsGrid(parameters):
     if grid_type == "linear":
         aXtraGrid = np.linspace(aXtraMin, aXtraMax, aXtraCount)
     elif grid_type == "exp_mult":
-        aXtraGrid = makeGridExpMult(
+        aXtraGrid = make_grid_exp_mult(
             ming=aXtraMin, maxg=aXtraMax, ng=aXtraCount, timestonest=exp_nest
         )
     else:
diff --git a/HARK/ConsumptionSaving/ConsIndShockModelFast.py b/HARK/ConsumptionSaving/ConsIndShockModelFast.py
index 5dc74add0..287e9c939 100644
--- a/HARK/ConsumptionSaving/ConsIndShockModelFast.py
+++ b/HARK/ConsumptionSaving/ConsIndShockModelFast.py
@@ -20,7 +20,7 @@
 from numba import njit
 from quantecon.optimize import newton_secant
 
-from HARK import makeOnePeriodOOSolver, MetricObject
+from HARK import make_one_period_oo_solver, MetricObject
 from HARK.ConsumptionSaving.ConsIndShockModel import (
     ConsumerSolution,
     ConsPerfForesightSolver,
@@ -45,7 +45,7 @@
     CRRAutility_inv,
     CRRAutilityP_invP,
 )
-from HARK.numba import LinearInterpFast, CubicInterpFast, LinearInterpDerivFast
+from HARK.numba import linear_interp_fast, cubic_interp_fast, linear_interp_deriv_fast
 
 __all__ = [
     "PerfForesightSolution",
@@ -535,8 +535,8 @@ def _solveConsIndShockLinearNumba(
 
     mNrmCnst = np.array([mNrmMinNext, mNrmMinNext + 1])
     cNrmCnst = np.array([0.0, 1.0])
-    cFuncNextCnst = LinearInterpFast(mNrmNext.flatten(), mNrmCnst, cNrmCnst)
-    cFuncNextUnc = LinearInterpFast(
+    cFuncNextCnst = linear_interp_fast(mNrmNext.flatten(), mNrmCnst, cNrmCnst)
+    cFuncNextUnc = linear_interp_fast(
         mNrmNext.flatten(), mNrmUnc, cNrmUnc, cFuncInterceptNext, cFuncSlopeNext
     )
     cFuncNext = np.minimum(cFuncNextCnst, cFuncNextUnc)
@@ -687,10 +687,10 @@ def _solveConsIndShockCubicNumba(
 ):
     mNrmCnst = np.array([mNrmMinNext, mNrmMinNext + 1])
     cNrmCnst = np.array([0.0, 1.0])
-    cFuncNextCnst, MPCNextCnst = LinearInterpDerivFast(
+    cFuncNextCnst, MPCNextCnst = linear_interp_deriv_fast(
         mNrmNext.flatten(), mNrmCnst, cNrmCnst
     )
-    cFuncNextUnc, MPCNextUnc = CubicInterpFast(
+    cFuncNextUnc, MPCNextUnc = cubic_interp_fast(
         mNrmNext.flatten(),
         mNrmUnc,
         cNrmUnc,
@@ -745,8 +745,8 @@ def _cFuncCubic(aXtraGrid, mNrmMinNow, mNrmNow, cNrmNow, MPCNow, MPCminNow, hNrm
     mNrmGrid = mNrmMinNow + aXtraGrid
     mNrmCnst = np.array([mNrmMinNow, mNrmMinNow + 1])
     cNrmCnst = np.array([0.0, 1.0])
-    cFuncNowCnst = LinearInterpFast(mNrmGrid.flatten(), mNrmCnst, cNrmCnst)
-    cFuncNowUnc, MPCNowUnc = CubicInterpFast(
+    cFuncNowCnst = linear_interp_fast(mNrmGrid.flatten(), mNrmCnst, cNrmCnst)
+    cFuncNowUnc, MPCNowUnc = cubic_interp_fast(
         mNrmGrid.flatten(), mNrmNow, cNrmNow, MPCNow, MPCminNow * hNrmNow, MPCminNow
     )
 
@@ -760,8 +760,8 @@ def _cFuncLinear(aXtraGrid, mNrmMinNow, mNrmNow, cNrmNow, MPCminNow, hNrmNow):
     mNrmGrid = mNrmMinNow + aXtraGrid
     mNrmCnst = np.array([mNrmMinNow, mNrmMinNow + 1])
     cNrmCnst = np.array([0.0, 1.0])
-    cFuncNowCnst = LinearInterpFast(mNrmGrid.flatten(), mNrmCnst, cNrmCnst)
-    cFuncNowUnc = LinearInterpFast(
+    cFuncNowCnst = linear_interp_fast(mNrmGrid.flatten(), mNrmCnst, cNrmCnst)
+    cFuncNowUnc = linear_interp_fast(
         mNrmGrid.flatten(), mNrmNow, cNrmNow, MPCminNow * hNrmNow, MPCminNow
     )
 
@@ -799,7 +799,7 @@ def _addvFuncNumba(
 
     # vFunc always cubic
 
-    vNvrsFuncNow, _ = CubicInterpFast(
+    vNvrsFuncNow, _ = cubic_interp_fast(
         mNrmNext.flatten(),
         mNrmGridNext,
         vNvrsNext,
@@ -833,7 +833,7 @@ def _addvFuncNumba(
 
     aNrmNow = mNrmGrid - cFuncNow
 
-    EndOfPrdvNvrsFunc, _ = CubicInterpFast(
+    EndOfPrdvNvrsFunc, _ = cubic_interp_fast(
         aNrmNow, aNrm_temp, EndOfPrdvNvrs, EndOfPrdvNvrsP
     )
     EndOfPrdvFunc = utility(EndOfPrdvNvrsFunc, CRRA)
@@ -893,8 +893,8 @@ def _searchSSfuncLinear(
 
     mNrmCnst = np.array([mNrmMin, mNrmMin + 1])
     cNrmCnst = np.array([0.0, 1.0])
-    cFuncNowCnst = LinearInterpFast(np.array([m]), mNrmCnst, cNrmCnst)
-    cFuncNowUnc = LinearInterpFast(np.array([m]), mNrm, cNrm, MPCmin * hNrm, MPCmin)
+    cFuncNowCnst = linear_interp_fast(np.array([m]), mNrmCnst, cNrmCnst)
+    cFuncNowUnc = linear_interp_fast(np.array([m]), mNrm, cNrm, MPCmin * hNrm, MPCmin)
 
     cNrmNow = np.where(cFuncNowCnst <= cFuncNowUnc, cFuncNowCnst, cFuncNowUnc)
 
@@ -913,8 +913,8 @@ def _searchSSfuncCubic(
 
     mNrmCnst = np.array([mNrmMin, mNrmMin + 1])
     cNrmCnst = np.array([0.0, 1.0])
-    cFuncNowCnst = LinearInterpFast(np.array([m]), mNrmCnst, cNrmCnst)
-    cFuncNowUnc, MPCNowUnc = CubicInterpFast(
+    cFuncNowCnst = linear_interp_fast(np.array([m]), mNrmCnst, cNrmCnst)
+    cFuncNowUnc, MPCNowUnc = cubic_interp_fast(
         np.array([m]), mNrm, cNrm, MPC, MPCmin * hNrm, MPCmin
     )
 
@@ -1086,7 +1086,7 @@ class PerfForesightConsumerTypeFast(PerfForesightConsumerType):
     def __init__(self, **kwargs):
         PerfForesightConsumerType.__init__(self, **kwargs)
 
-        self.solveOnePeriod = makeOnePeriodOOSolver(ConsPerfForesightSolverFast)
+        self.solve_one_period = make_one_period_oo_solver(ConsPerfForesightSolverFast)
 
     def updateSolutionTerminal(self):
         """
@@ -1105,7 +1105,7 @@ def updateSolutionTerminal(self):
             MPCmax=1.0,
         )
 
-    def postSolve(self):
+    def post_solve(self):
         self.solution_fast = deepcopy(self.solution)
 
         if self.cycles == 0:
@@ -1179,7 +1179,7 @@ def __init__(self, **kwargs):
         else:  # Use the "advanced" solver if either is requested
             solver = ConsIndShockSolverFast
 
-        self.solveOnePeriod = makeOnePeriodOOSolver(solver)
+        self.solve_one_period = make_one_period_oo_solver(solver)
 
     def updateSolutionTerminal(self):
         PerfForesightConsumerTypeFast.updateSolutionTerminal(self)
@@ -1192,7 +1192,7 @@ def updateSolutionTerminal(self):
             self.solution_terminal.vNvrsP = utilityP(np.linspace(0.0, 1.0), self.CRRA)
             self.solution_terminal.mNrmGrid = np.linspace(0.0, 1.0)
 
-    def postSolve(self):
+    def post_solve(self):
         self.solution_fast = deepcopy(self.solution)
 
         if self.cycles == 0:
diff --git a/HARK/ConsumptionSaving/ConsLaborModel.py b/HARK/ConsumptionSaving/ConsLaborModel.py
index dcabe2ad3..ce11b11b8 100644
--- a/HARK/ConsumptionSaving/ConsLaborModel.py
+++ b/HARK/ConsumptionSaving/ConsLaborModel.py
@@ -367,7 +367,7 @@ def __init__(self, cycles=1, **kwds):
         IndShockConsumerType.__init__(self, cycles=cycles, **params)
 
         self.pseudo_terminal = False
-        self.solveOnePeriod = solveConsLaborIntMarg
+        self.solve_one_period = solveConsLaborIntMarg
         self.update()
 
     def update(self):
@@ -409,7 +409,7 @@ def updateLbrCost(self):
             LbrCostBase += Coeffs[n] * age_vec ** n
         LbrCost = np.exp(LbrCostBase)
         self.LbrCost = LbrCost.tolist()
-        self.addToTimeVary("LbrCost")
+        self.add_to_time_vary("LbrCost")
 
     def calcBoundingValues(self):
         """
@@ -463,12 +463,12 @@ def makeEulerErrorFunc(self, mMax=100, approx_inc_dstn=True):
         """
         raise NotImplementedError()
 
-    def getStates(self):
+    def get_states(self):
         """
         Calculates updated values of normalized bank balances and permanent income
-        level for each agent.  Uses pLvlNow, aNrmNow, PermShkNow.  Calls the getStates
+        level for each agent.  Uses pLvlNow, aNrmNow, PermShkNow.  Calls the get_states
         method for the parent class, then erases mNrmNow, which cannot be calculated
-        until after getControls in this model.
+        until after get_controls in this model.
 
         Parameters
         ----------
@@ -478,10 +478,10 @@ def getStates(self):
         -------
         None
         """
-        IndShockConsumerType.getStates(self)
+        IndShockConsumerType.get_states(self)
         self.state_now['mNrm'][:] = np.nan  # Delete market resource calculation
 
-    def getControls(self):
+    def get_controls(self):
         """
         Calculates consumption and labor supply for each consumer of this type
         using the consumption and labor functions in each period of the cycle.
@@ -512,7 +512,7 @@ def getControls(self):
         self.MPCnow = MPCnow
         self.controls['Lbr'] = LbrNow
 
-    def getPostStates(self):
+    def get_poststates(self):
         """
         Calculates end-of-period assets for each consumer of this type.
 
@@ -537,7 +537,7 @@ def getPostStates(self):
         self.state_now['aNrm'] = aNrmNow
 
         # moves now to prev
-        super().getPostStates()
+        super().get_poststates()
 
     def updateTranShkGrid(self):
         """
@@ -560,9 +560,9 @@ def updateTranShkGrid(self):
                 self.TranShkDstn[t].X
             )  # Update/ Extend the list of TranShkGrid with the TranShkVals for each TranShkPrbs
         self.TranShkGrid = TranShkGrid  # Save that list in self (time-varying)
-        self.addToTimeVary(
+        self.add_to_time_vary(
             "TranShkGrid"
-        )  # Run the method addToTimeVary from AgentType to add TranShkGrid as one parameter of time_vary list
+        )  # Run the method add_to_time_vary from AgentType to add TranShkGrid as one parameter of time_vary list
 
     def updateSolutionTerminal(self):
         """
diff --git a/HARK/ConsumptionSaving/ConsMarkovModel.py b/HARK/ConsumptionSaving/ConsMarkovModel.py
index aaeb312f6..c4674f5dd 100644
--- a/HARK/ConsumptionSaving/ConsMarkovModel.py
+++ b/HARK/ConsumptionSaving/ConsMarkovModel.py
@@ -21,7 +21,7 @@
     DiscreteDistribution,
     MarkovProcess,
     Uniform,
-    calcExpectation
+    calc_expectation
 )
 from HARK.interpolation import (
     CubicInterp,
@@ -333,7 +333,7 @@ def vpp_next(shocks, a_nrm):
             * self.Rfree
             * self.Rfree
             * self.PermGroFac ** (-self.CRRA - 1.0)
-            * calcExpectation(
+            * calc_expectation(
                 self.IncShkDstn,
                 vpp_next,
                 self.aNrmNow
@@ -848,7 +848,7 @@ class MarkovConsumerType(IndShockConsumerType):
 
     def __init__(self, cycles=1, **kwds):
         IndShockConsumerType.__init__(self, cycles=1, **kwds)
-        self.solveOnePeriod = _solveConsMarkov
+        self.solve_one_period = _solveConsMarkov
 
         if not hasattr(self, "global_markov"):
             self.global_markov = False
@@ -915,7 +915,7 @@ def checkMarkovInputs(self):
                     "List in IncShkDstn is not the right length, it should be length equal to number of states"
                 )
 
-    def preSolve(self):
+    def pre_solve(self):
         """
         Check to make sure that the inputs that are specific to MarkovConsumerType
         are of the right shape (if arrays) or length (if lists).
@@ -928,7 +928,7 @@ def preSolve(self):
         -------
         None
         """
-        AgentType.preSolve(self)
+        AgentType.pre_solve(self)
         self.checkMarkovInputs()
 
     def updateSolutionTerminal(self):
@@ -957,9 +957,9 @@ def updateSolutionTerminal(self):
         self.solution_terminal.MPCmax = np.ones(StateCount)
         self.solution_terminal.MPCmin = np.ones(StateCount)
 
-    def initializeSim(self):
+    def initialize_sim(self):
         self.shocks["Mrkv"] = np.zeros(self.AgentCount, dtype=int)
-        IndShockConsumerType.initializeSim(self)
+        IndShockConsumerType.initialize_sim(self)
         if (
             self.global_markov
         ):  # Need to initialize markov state to be the same for all agents
@@ -970,11 +970,11 @@ def initializeSim(self):
             ).astype(int)
         self.shocks["Mrkv"] = self.shocks["Mrkv"].astype(int)
 
-    def resetRNG(self):
+    def reset_rng(self):
         """
         Extended method that ensures random shocks are drawn from the same sequence
         on each simulation, which is important for structural estimation.  This
-        method is called automatically by initializeSim().
+        method is called automatically by initialize_sim().
 
         Parameters
         ----------
@@ -984,16 +984,16 @@ def resetRNG(self):
         -------
         None
         """
-        PerfForesightConsumerType.resetRNG(self)
+        PerfForesightConsumerType.reset_rng(self)
 
-        # Reset IncShkDstn if it exists (it might not because resetRNG is called at init)
+        # Reset IncShkDstn if it exists (it might not because reset_rng is called at init)
         if hasattr(self, "IncShkDstn"):
             T = len(self.IncShkDstn)
             for t in range(T):
                 for dstn in self.IncShkDstn[t]:
                     dstn.reset()
 
-    def simDeath(self):
+    def sim_death(self):
         """
         Determines which agents die this period and must be replaced.  Uses the sequence in LivPrb
         to determine survival probabilities for each agent.
@@ -1021,10 +1021,10 @@ def simDeath(self):
             which_agents = np.logical_or(which_agents, too_old)
         return which_agents
 
-    def simBirth(self, which_agents):
+    def sim_birth(self, which_agents):
         """
         Makes new Markov consumer by drawing initial normalized assets, permanent income levels, and
-        discrete states. Calls IndShockConsumerType.simBirth, then draws from initial Markov distribution.
+        discrete states. Calls IndShockConsumerType.sim_birth, then draws from initial Markov distribution.
 
         Parameters
         ----------
@@ -1035,7 +1035,7 @@ def simBirth(self, which_agents):
         -------
         None
         """
-        IndShockConsumerType.simBirth(
+        IndShockConsumerType.sim_birth(
             self, which_agents
         )  # Get initial assets and permanent income
         if (
@@ -1085,7 +1085,7 @@ def getMarkovStates(self):
 
         self.shocks["Mrkv"] = MrkvNow.astype(int)
 
-    def getShocks(self):
+    def get_shocks(self):
         """
         Gets new Markov states and permanent and transitory income shocks for this period.  Samples
         from IncShkDstn for each period-state in the cycle.
@@ -1128,9 +1128,9 @@ def getShocks(self):
         self.shocks['PermShk'] = PermShkNow
         self.shocks['TranShk'] = TranShkNow
 
-    def readShocks(self):
+    def read_shocks_from_history(self):
         """
-        A slight modification of AgentType.readShocks that makes sure that MrkvNow is int, not float.
+        A slight modification of AgentType.read_shocks that makes sure that MrkvNow is int, not float.
 
         Parameters
         ----------
@@ -1140,7 +1140,7 @@ def readShocks(self):
         -------
         None
         """
-        IndShockConsumerType.readShocks(self)
+        IndShockConsumerType.read_shocks_from_history(self)
         self.shocks['Mrkv'] = self.shocks['Mrkv'].astype(int)
 
     def getRfree(self):
@@ -1159,7 +1159,7 @@ def getRfree(self):
         RfreeNow = self.Rfree[self.shocks['Mrkv']]
         return RfreeNow
 
-    def getControls(self):
+    def get_controls(self):
         """
         Calculates consumption for each consumer of this type using the consumption functions.
 
diff --git a/HARK/ConsumptionSaving/ConsMedModel.py b/HARK/ConsumptionSaving/ConsMedModel.py
index b89a845d1..a23144dc1 100644
--- a/HARK/ConsumptionSaving/ConsMedModel.py
+++ b/HARK/ConsumptionSaving/ConsMedModel.py
@@ -7,15 +7,15 @@
 from builtins import range
 import numpy as np
 from scipy.optimize import brentq
-from HARK import  AgentType, MetricObject, makeOnePeriodOOSolver
-from HARK.distribution import addDiscreteOutcomeConstantMean, Lognormal
+from HARK import  AgentType, MetricObject, make_one_period_oo_solver
+from HARK.distribution import add_discrete_outcome_constant_mean, Lognormal
 from HARK.utilities import (
     CRRAutilityP_inv,
     CRRAutility,
     CRRAutility_inv,
     CRRAutility_invP,
     CRRAutilityPP,
-    makeGridExpMult,
+    make_grid_exp_mult,
     NullFunc,
 )
 from HARK.ConsumptionSaving.ConsIndShockModel import ConsumerSolution
@@ -580,11 +580,11 @@ def __init__(self, cycles=0, **kwds):
         params.update(kwds)
 
         PersistentShockConsumerType.__init__(self, cycles=cycles, **params)
-        self.solveOnePeriod = makeOnePeriodOOSolver(ConsMedShockSolver)
-        self.addToTimeInv("CRRAmed")
-        self.addToTimeVary("MedPrice")
+        self.solve_one_period = make_one_period_oo_solver(ConsMedShockSolver)
+        self.add_to_time_inv("CRRAmed")
+        self.add_to_time_vary("MedPrice")
 
-    def preSolve(self):
+    def pre_solve(self):
         self.updateSolutionTerminal()
 
     def update(self):
@@ -630,12 +630,12 @@ def updateMedShockProcess(self):
             ).approx(
                 N=self.MedShkCount, tail_N=self.MedShkCountTail, tail_bound=[0, 0.9]
             )
-            MedShkDstnNow = addDiscreteOutcomeConstantMean(
+            MedShkDstnNow = add_discrete_outcome_constant_mean(
                 MedShkDstnNow, 0.0, 0.0, sort=True
             )  # add point at zero with no probability
             MedShkDstn.append(MedShkDstnNow)
         self.MedShkDstn = MedShkDstn
-        self.addToTimeVary("MedShkDstn")
+        self.add_to_time_vary("MedShkDstn")
 
     def updateSolutionTerminal(self):
         """
@@ -660,7 +660,7 @@ def updateSolutionTerminal(self):
         MedShkGrid = MedShkVals
         xLvlMin = np.min(self.aXtraGrid) * np.min(self.pLvlGrid)
         xLvlMax = np.max(self.aXtraGrid) * np.max(self.pLvlGrid)
-        xLvlGrid = makeGridExpMult(xLvlMin, xLvlMax, 3 * self.aXtraGrid.size, 8)
+        xLvlGrid = make_grid_exp_mult(xLvlMin, xLvlMax, 3 * self.aXtraGrid.size, 8)
         trivial_grid = np.array([0.0, 1.0])  # Trivial grid
 
         # Make the policy functions for the terminal period
@@ -776,12 +776,12 @@ def updatepLvlGrid(self):
             this_grid = self.pLvlGrid[j]
             self.pLvlGrid[j] = np.insert(this_grid, 0, 0.0001)
 
-    def resetRNG(self):
+    def reset_rng(self):
         """
         Reset the RNG behavior of this type.  This method is called automatically
-        by initializeSim(), ensuring that each simulation run uses the same sequence
+        by initialize_sim(), ensuring that each simulation run uses the same sequence
         of random shocks; this is necessary for structural estimation to work.
-        This method extends PersistentShockConsumerType.resetRNG() to also reset
+        This method extends PersistentShockConsumerType.reset_rng() to also reset
         elements of MedShkDstn.
 
         Parameters
@@ -792,14 +792,14 @@ def resetRNG(self):
         -------
         None
         """
-        PersistentShockConsumerType.resetRNG(self)
+        PersistentShockConsumerType.reset_rng(self)
 
-        # Reset MedShkDstn if it exists (it might not because resetRNG is called at init)
+        # Reset MedShkDstn if it exists (it might not because reset_rng is called at init)
         if hasattr(self, "MedShkDstn"):
             for dstn in self.MedShkDstn:
                 dstn.reset()
 
-    def getShocks(self):
+    def get_shocks(self):
         """
         Gets permanent and transitory income shocks for this period as well as medical need shocks
         and the price of medical care.
@@ -812,7 +812,7 @@ def getShocks(self):
         -------
         None
         """
-        PersistentShockConsumerType.getShocks(
+        PersistentShockConsumerType.get_shocks(
             self
         )  # Get permanent and transitory income shocks
         MedShkNow = np.zeros(self.AgentCount)  # Initialize medical shock array
@@ -826,7 +826,7 @@ def getShocks(self):
         self.shocks["MedShk"] = MedShkNow
         self.shocks["MedPrice"] = MedPriceNow
 
-    def getControls(self):
+    def get_controls(self):
         """
         Calculates consumption and medical care for each consumer of this type using the consumption
         and medical care functions.
@@ -852,7 +852,7 @@ def getControls(self):
         self.controls['Med'] = MedNow
         return None
 
-    def getPostStates(self):
+    def get_poststates(self):
         """
         Calculates end-of-period assets for each consumer of this type.
 
@@ -867,7 +867,7 @@ def getPostStates(self):
         self.state_now['aLvl'] = self.state_now['mLvl'] - self.controls['cLvl'] - self.shocks["MedPrice"] * self.controls['Med']
 
         # moves now to prev
-        AgentType.getPostStates(self)
+        AgentType.get_poststates(self)
 
         return None
 
@@ -1173,7 +1173,7 @@ def usePointsForInterpolation(self, xLvl, mLvl, pLvl, MedShk, interpolator):
 
         # Transform the expenditure function into policy functions for consumption and medical care
         aug_factor = 2
-        xLvlGrid = makeGridExpMult(
+        xLvlGrid = make_grid_exp_mult(
             np.min(xLvl), np.max(xLvl), aug_factor * self.aXtraGrid.size, 8
         )
         policyFuncNow = MedShockPolicyFunc(
diff --git a/HARK/ConsumptionSaving/ConsPortfolioModel.py b/HARK/ConsumptionSaving/ConsPortfolioModel.py
index 78ed63695..be7872fb6 100644
--- a/HARK/ConsumptionSaving/ConsPortfolioModel.py
+++ b/HARK/ConsumptionSaving/ConsPortfolioModel.py
@@ -17,7 +17,7 @@
     init_idiosyncratic_shocks  # Baseline dictionary to build on
 )
 
-from HARK.distribution import combineIndepDstns
+from HARK.distribution import combine_indep_dstns
 from HARK.distribution import Lognormal, Bernoulli  # Random draws for simulating agents
 from HARK.interpolation import (
     LinearInterp,  # Piecewise linear interpolation
@@ -146,11 +146,11 @@ def __init__(self, cycles=1, verbose=False, quiet=False, **kwds):
         shock_vars = ['PermShk', 'TranShk','Adjust','Risky']
 
         # Set the solver for the portfolio model, and update various constructed attributes
-        self.solveOnePeriod = solveConsPortfolio
+        self.solve_one_period = solveConsPortfolio
         self.update()
 
-    def preSolve(self):
-        AgentType.preSolve(self)
+    def pre_solve(self):
+        AgentType.pre_solve(self)
         self.updateSolutionTerminal()
 
     def update(self):
@@ -227,13 +227,13 @@ def updateRiskyDstn(self):
             and (len(self.RiskyAvg) == len(self.RiskyStd))
             and (len(self.RiskyAvg) == self.T_cycle)
         ):
-            self.addToTimeVary("RiskyAvg", "RiskyStd")
+            self.add_to_time_vary("RiskyAvg", "RiskyStd")
         elif (type(self.RiskyStd) is list) or (type(self.RiskyAvg) is list):
             raise AttributeError(
                 "If RiskyAvg is time-varying, then RiskyStd must be as well, and they must both have length of T_cycle!"
             )
         else:
-            self.addToTimeInv("RiskyAvg", "RiskyStd")
+            self.add_to_time_inv("RiskyAvg", "RiskyStd")
 
         # Generate a discrete approximation to the risky return distribution if the
         # agent has age-varying beliefs about the risky asset
@@ -246,7 +246,7 @@ def updateRiskyDstn(self):
                         self.RiskyStd[t]
                     ).approx(self.RiskyCount)
                 )
-            self.addToTimeVary("RiskyDstn")
+            self.add_to_time_vary("RiskyDstn")
 
         # Generate a discrete approximation to the risky return distribution if the
         # agent does *not* have age-varying beliefs about the risky asset (base case)
@@ -255,7 +255,7 @@ def updateRiskyDstn(self):
                 self.RiskyAvg,
                 self.RiskyStd,
             ).approx(self.RiskyCount)
-            self.addToTimeInv("RiskyDstn")
+            self.add_to_time_inv("RiskyDstn")
 
     def updateShockDstn(self):
         """
@@ -272,19 +272,19 @@ def updateShockDstn(self):
         """
         if "RiskyDstn" in self.time_vary:
             self.ShockDstn = [
-                combineIndepDstns(self.IncShkDstn[t], self.RiskyDstn[t])
+                combine_indep_dstns(self.IncShkDstn[t], self.RiskyDstn[t])
                 for t in range(self.T_cycle)
             ]
         else:
             self.ShockDstn = [
-                combineIndepDstns(self.IncShkDstn[t], self.RiskyDstn)
+                combine_indep_dstns(self.IncShkDstn[t], self.RiskyDstn)
                 for t in range(self.T_cycle)
             ]
-        self.addToTimeVary("ShockDstn")
+        self.add_to_time_vary("ShockDstn")
 
         # Mark whether the risky returns and income shocks are independent (they are)
         self.IndepDstnBool = True
-        self.addToTimeInv("IndepDstnBool")
+        self.add_to_time_inv("IndepDstnBool")
 
     def updateShareGrid(self):
         """
@@ -300,7 +300,7 @@ def updateShareGrid(self):
         None
         """
         self.ShareGrid = np.linspace(0.0, 1.0, self.ShareCount)
-        self.addToTimeInv("ShareGrid")
+        self.add_to_time_inv("ShareGrid")
 
     def updateShareLimit(self):
         """
@@ -325,7 +325,7 @@ def updateShareLimit(self):
                 )
                 SharePF = minimize_scalar(temp_f, bounds=(0.0, 1.0), method="bounded").x
                 self.ShareLimit.append(SharePF)
-            self.addToTimeVary("ShareLimit")
+            self.add_to_time_vary("ShareLimit")
 
         else:
             RiskyDstn = self.RiskyDstn
@@ -335,7 +335,7 @@ def updateShareLimit(self):
             )
             SharePF = minimize_scalar(temp_f, bounds=(0.0, 1.0), method="bounded").x
             self.ShareLimit = SharePF
-            self.addToTimeInv("ShareLimit")
+            self.add_to_time_inv("ShareLimit")
 
     def getRisky(self):
         """
@@ -399,14 +399,14 @@ def getRfree(self):
         -------
         Rport : np.array
             Array of size AgentCount with each simulated agent's realized portfolio
-            return factor.  Will be used by getStates() to calculate mNrmNow, where it
+            return factor.  Will be used by get_states() to calculate mNrmNow, where it
             will be mislabeled as "Rfree".
         """
         Rport = self.controls["Share"] * self.shocks['Risky'] + (1.0 - self.controls["Share"]) * self.Rfree
         self.Rport = Rport
         return Rport
 
-    def initializeSim(self):
+    def initialize_sim(self):
         """
         Initialize the state of simulation attributes.  Simply calls the same method
         for IndShockConsumerType, then sets the type of AdjustNow to bool.
@@ -423,9 +423,9 @@ def initializeSim(self):
         # but are a control variable and shock, respectively
         self.controls["Share"] = np.zeros(self.AgentCount)
         self.shocks['Adjust'] = np.zeros(self.AgentCount, dtype=bool)
-        IndShockConsumerType.initializeSim(self)
+        IndShockConsumerType.initialize_sim(self)
 
-    def simBirth(self, which_agents):
+    def sim_birth(self, which_agents):
         """
         Create new agents to replace ones who have recently died; takes draws of
         initial aNrm and pLvl, as in ConsIndShockModel, then sets Share and Adjust
@@ -439,13 +439,13 @@ def simBirth(self, which_agents):
         -------
         None
         """
-        IndShockConsumerType.simBirth(self, which_agents)
+        IndShockConsumerType.sim_birth(self, which_agents)
 
         self.controls["Share"][which_agents] = 0
         # here a shock is being used as a 'post state'
         self.shocks['Adjust'][which_agents] = False
 
-    def getShocks(self):
+    def get_shocks(self):
         """
         Draw idiosyncratic income shocks, just as for IndShockConsumerType, then draw
         a single common value for the risky asset return.  Also draws whether each
@@ -459,11 +459,11 @@ def getShocks(self):
         -------
         None
         """
-        IndShockConsumerType.getShocks(self)
+        IndShockConsumerType.get_shocks(self)
         self.getRisky()
         self.getAdjust()
 
-    def getControls(self):
+    def get_controls(self):
         """
         Calculates consumption cNrmNow and risky portfolio share ShareNow using
         the policy functions in the attribute solution.  These are stored as attributes.
diff --git a/HARK/ConsumptionSaving/ConsPrefShockModel.py b/HARK/ConsumptionSaving/ConsPrefShockModel.py
index 90b71004b..e1f9dff55 100644
--- a/HARK/ConsumptionSaving/ConsPrefShockModel.py
+++ b/HARK/ConsumptionSaving/ConsPrefShockModel.py
@@ -11,7 +11,7 @@
 from builtins import str
 from builtins import range
 import numpy as np
-from HARK import makeOnePeriodOOSolver
+from HARK import make_one_period_oo_solver
 from HARK.distribution import MeanOneLogNormal
 from HARK.ConsumptionSaving.ConsIndShockModel import (
     IndShockConsumerType,
@@ -86,9 +86,9 @@ def __init__(self, cycles=1, **kwds):
         params.update(kwds)
 
         IndShockConsumerType.__init__(self, cycles=cycles, **params)
-        self.solveOnePeriod = makeOnePeriodOOSolver(ConsPrefShockSolver)
+        self.solve_one_period = make_one_period_oo_solver(ConsPrefShockSolver)
 
-    def preSolve(self):
+    def pre_solve(self):
         self.updateSolutionTerminal()
 
     def update(self):
@@ -134,14 +134,14 @@ def updatePrefShockProcess(self):
 
         # Store the preference shocks in self (time-varying) and restore time flow
         self.PrefShkDstn = PrefShkDstn
-        self.addToTimeVary("PrefShkDstn")
+        self.add_to_time_vary("PrefShkDstn")
 
-    def resetRNG(self):
+    def reset_rng(self):
         """
         Reset the RNG behavior of this type.  This method is called automatically
-        by initializeSim(), ensuring that each simulation run uses the same sequence
+        by initialize_sim(), ensuring that each simulation run uses the same sequence
         of random shocks; this is necessary for structural estimation to work.
-        This method extends IndShockConsumerType.resetRNG() to also reset elements
+        This method extends IndShockConsumerType.reset_rng() to also reset elements
         of PrefShkDstn.
 
         Parameters
@@ -152,14 +152,14 @@ def resetRNG(self):
         -------
         None
         """
-        IndShockConsumerType.resetRNG(self)
+        IndShockConsumerType.reset_rng(self)
 
-        # Reset PrefShkDstn if it exists (it might not because resetRNG is called at init)
+        # Reset PrefShkDstn if it exists (it might not because reset_rng is called at init)
         if hasattr(self, "PrefShkDstn"):
             for dstn in self.PrefShkDstn:
                 dstn.reset()
 
-    def getShocks(self):
+    def get_shocks(self):
         """
         Gets permanent and transitory income shocks for this period as well as preference shocks.
 
@@ -171,7 +171,7 @@ def getShocks(self):
         -------
         None
         """
-        IndShockConsumerType.getShocks(
+        IndShockConsumerType.get_shocks(
             self
         )  # Get permanent and transitory income shocks
         PrefShkNow = np.zeros(self.AgentCount)  # Initialize shock array
@@ -182,7 +182,7 @@ def getShocks(self):
                 PrefShkNow[these] = self.PrefShkDstn[t].draw(N)
         self.shocks["PrefShk"] = PrefShkNow
 
-    def getControls(self):
+    def get_controls(self):
         """
         Calculates consumption for each consumer of this type using the consumption functions.
 
@@ -276,11 +276,11 @@ def __init__(self, cycles=1, **kwds):
         params.update(kwds)
         kwds = params
         IndShockConsumerType.__init__(self, **kwds)
-        self.solveOnePeriod = makeOnePeriodOOSolver(ConsKinkyPrefSolver)
-        self.addToTimeInv("Rboro", "Rsave")
-        self.delFromTimeInv("Rfree")
+        self.solve_one_period = make_one_period_oo_solver(ConsKinkyPrefSolver)
+        self.add_to_time_inv("Rboro", "Rsave")
+        self.del_from_time_inv("Rfree")
 
-    def preSolve(self):
+    def pre_solve(self):
         self.updateSolutionTerminal()
 
     def getRfree(self):  # Specify which getRfree to use
diff --git a/HARK/ConsumptionSaving/ConsRepAgentModel.py b/HARK/ConsumptionSaving/ConsRepAgentModel.py
index 282de855e..9562136a8 100644
--- a/HARK/ConsumptionSaving/ConsRepAgentModel.py
+++ b/HARK/ConsumptionSaving/ConsRepAgentModel.py
@@ -245,13 +245,13 @@ def __init__(self, **kwds):
 
         IndShockConsumerType.__init__(self, cycles=0, **params)
         self.AgentCount = 1  # Hardcoded, because this is rep agent
-        self.solveOnePeriod = solveConsRepAgent
-        self.delFromTimeInv("Rfree", "BoroCnstArt", "vFuncBool", "CubicBool")
+        self.solve_one_period = solveConsRepAgent
+        self.del_from_time_inv("Rfree", "BoroCnstArt", "vFuncBool", "CubicBool")
 
-    def preSolve(self):
+    def pre_solve(self):
         self.updateSolutionTerminal()
 
-    def getStates(self):
+    def get_states(self):
         """
         TODO: replace with call to transition
 
@@ -308,14 +308,14 @@ def __init__(self, **kwds):
         params.update(kwds)
 
         RepAgentConsumerType.__init__(self, **params)
-        self.solveOnePeriod = solveConsRepAgentMarkov
+        self.solve_one_period = solveConsRepAgentMarkov
 
-    def preSolve(self):
+    def pre_solve(self):
         self.updateSolutionTerminal()
 
-    def initializeSim(self):
+    def initialize_sim(self):
         #self.shocks["Mrkv"] = np.zeros(self.AgentCount, dtype=int)
-        RepAgentConsumerType.initializeSim(self)
+        RepAgentConsumerType.initialize_sim(self)
         self.shocks["Mrkv"] = self.Mrkv
 
     def updateSolutionTerminal(self):
@@ -339,10 +339,10 @@ def updateSolutionTerminal(self):
         self.solution_terminal.vPfunc = StateCount * [self.solution_terminal.vPfunc]
         self.solution_terminal.mNrmMin = StateCount * [self.solution_terminal.mNrmMin]
 
-    def resetRNG(self):
-        MarkovConsumerType.resetRNG(self)
+    def reset_rng(self):
+        MarkovConsumerType.reset_rng(self)
 
-    def getShocks(self):
+    def get_shocks(self):
         """
         Draws a new Markov state and income shocks for the representative agent.
 
@@ -372,7 +372,7 @@ def getShocks(self):
         self.shocks['PermShk'] = np.array(PermShkNow)
         self.shocks['TranShk'] = np.array(TranShkNow)
 
-    def getControls(self):
+    def get_controls(self):
         """
         Calculates consumption for the representative agent using the consumption functions.
 
diff --git a/HARK/ConsumptionSaving/TractableBufferStockModel.py b/HARK/ConsumptionSaving/TractableBufferStockModel.py
index aa6fcdfe4..3d3ecf764 100644
--- a/HARK/ConsumptionSaving/TractableBufferStockModel.py
+++ b/HARK/ConsumptionSaving/TractableBufferStockModel.py
@@ -192,7 +192,7 @@ def addToStableArmPoints(
     Adds a one point to the bottom and top of the list of stable arm points if
     the bounding levels of mLowerBnd (lower) and mUpperBnd (upper) have not yet
     been met by a stable arm point in mNrm_list.  This acts as the "one period
-    solver" / solveOnePeriod in the tractable buffer stock model.
+    solver" / solve_one_period in the tractable buffer stock model.
 
     Parameters
     ----------
@@ -328,9 +328,9 @@ def __init__(self, cycles=0, **kwds):
         ]
         self.shock_vars = ["eStateNow"]
         self.poststate_vars = ['aLvl', "eStateNow"]  # For simulation
-        self.solveOnePeriod = addToStableArmPoints  # set correct solver
+        self.solve_one_period = addToStableArmPoints  # set correct solver
 
-    def preSolve(self):
+    def pre_solve(self):
         """
         Calculates all of the solution objects that can be obtained before con-
         ducting the backshooting routine, including the target levels, the per-
@@ -538,7 +538,7 @@ def preSolve(self):
             + (1.0 - self.PermGroFacCmp / self.Rfree) * m
         )
 
-    def postSolve(self):
+    def post_solve(self):
         """
         This method adds consumption at m=0 to the list of stable arm points,
         then constructs the consumption function as a cubic interpolation over
@@ -567,7 +567,7 @@ def postSolve(self):
         )
         self.solution[0].cFunc_U = lambda m: self.PFMPC * m
 
-    def simBirth(self, which_agents):
+    def sim_birth(self, which_agents):
         """
         Makes new consumers for the given indices.  Initialized variables include aNrm, as
         well as time variables t_age and t_cycle.  Normalized assets are drawn from a lognormal
@@ -597,7 +597,7 @@ def simBirth(self, which_agents):
         ] = 0  # Which period of the cycle each agent is currently in
         return None
 
-    def simDeath(self):
+    def sim_death(self):
         """
         Trivial function that returns boolean array of all False, as there is no death.
 
@@ -614,7 +614,7 @@ def simDeath(self):
         which_agents = np.zeros(self.AgentCount, dtype=bool)
         return which_agents
 
-    def getShocks(self):
+    def get_shocks(self):
         """
         Determine which agents switch from employment to unemployment.  All unemployed agents remain
         unemployed until death.
@@ -651,7 +651,7 @@ def transition(self):
 
         return bLvlNow, mLvlNow
 
-    def getControls(self):
+    def get_controls(self):
         """
         Calculate consumption for each agent this period.
 
@@ -670,7 +670,7 @@ def getControls(self):
         cLvlNow[unemployed] = self.solution[0].cFunc_U(self.state_now['mLvl'][unemployed])
         self.controls["cLvlNow"] = cLvlNow
 
-    def getPostStates(self):
+    def get_poststates(self):
         """
         Calculates end-of-period assets for each consumer of this type.
 
diff --git a/HARK/core.py b/HARK/core.py
index ad3bb1897..624b053c6 100644
--- a/HARK/core.py
+++ b/HARK/core.py
@@ -15,69 +15,69 @@
 import sys
 import os
 from distutils.dir_util import copy_tree
-from .utilities import getArgNames, NullFunc
+from .utilities import get_arg_names, NullFunc
 from copy import copy, deepcopy
 import numpy as np
 from time import time
-from .parallel import multiThreadCommands, multiThreadCommandsFake
+from .parallel import multi_thread_commands, multi_thread_commands_fake
 from warnings import warn
 
 
-def distanceMetric(thing_A, thing_B):
+def distance_metric(thing_a, thing_b):
     """
     A "universal distance" metric that can be used as a default in many settings.
 
     Parameters
     ----------
-    thing_A : object
+    thing_a : object
         A generic object.
-    thing_B : object
+    thing_b : object
         Another generic object.
 
     Returns:
     ------------
     distance : float
-        The "distance" between thing_A and thing_B.
+        The "distance" between thing_a and thing_b.
     """
     # Get the types of the two inputs
-    typeA = type(thing_A)
-    typeB = type(thing_B)
+    type_a = type(thing_a)
+    type_b = type(thing_b)
 
-    if typeA is list and typeB is list:
-        lenA = len(thing_A)  # If both inputs are lists, then the distance between
-        lenB = len(thing_B)  # them is the maximum distance between corresponding
-        if lenA == lenB:  # elements in the lists.  If they differ in length,
+    if type_a is list and type_b is list:
+        len_a = len(thing_a)  # If both inputs are lists, then the distance between
+        len_b = len(thing_b)  # them is the maximum distance between corresponding
+        if len_a == len_b:  # elements in the lists.  If they differ in length,
             distance_temp = []  # the distance is the difference in lengths.
-            for n in range(lenA):
-                distance_temp.append(distanceMetric(thing_A[n], thing_B[n]))
+            for n in range(len_a):
+                distance_temp.append(distance_metric(thing_a[n], thing_b[n]))
             distance = max(distance_temp)
         else:
             warn(
                 'Objects of different lengths are being compared. ' +
                 'Returning difference in lengths.'
                 )
-            distance = float(abs(lenA - lenB))
+            distance = float(abs(len_a - len_b))
     # If both inputs are dictionaries, call distance on the list of its elements
-    elif typeA is dict and typeB is dict:
+    elif type_a is dict and type_b is dict:
 
-        lenA = len(thing_A)
-        lenB = len(thing_B)
+        len_a = len(thing_a)
+        len_b = len(thing_b)
 
-        if lenA == lenB:
+        if len_a == len_b:
 
             # Create versions sorted by key
-            sortedA = dict(sorted(thing_A.items()))
-            sortedB = dict(sorted(thing_B.items()))
+            sorted_a = dict(sorted(thing_a.items()))
+            sorted_b = dict(sorted(thing_b.items()))
 
             # If keys don't match, print a warning.
-            if list(sortedA.keys()) != list(sortedB.keys()):
+            if list(sorted_a.keys()) != list(sorted_b.keys()):
                 warn(
                     'Dictionaries with keys that do not match are being ' + 
                     'compared.'
                 )
 
-            distance = distanceMetric(list(sortedA.values()),
-                                      list(sortedB.values()))
+            distance = distance_metric(list(sorted_a.values()),
+                                      list(sorted_b.values()))
 
         else:
             # If they have different lengths, log a warning and return the
@@ -86,29 +86,29 @@ def distanceMetric(thing_A, thing_B):
                 'Objects of different lengths are being compared. ' + 
                 'Returning difference in lengths.'
                 )
-            distance = float(abs(lenA - lenB))
+            distance = float(abs(len_a - len_b))
 
     # If both inputs are numbers, return their difference
-    elif isinstance(thing_A, (int, float)) and isinstance(thing_B, (int, float)):
-        distance = float(abs(thing_A - thing_B))
+    elif isinstance(thing_a, (int, float)) and isinstance(thing_b, (int, float)):
+        distance = float(abs(thing_a - thing_b))
     # If both inputs are array-like, return the maximum absolute difference b/w
     # corresponding elements (if same shape); return largest difference in dimensions
     # if shapes do not align.
-    elif hasattr(thing_A, "shape") and hasattr(thing_B, "shape"):
-        if thing_A.shape == thing_B.shape:
-            distance = np.max(abs(thing_A - thing_B))
+    elif hasattr(thing_a, "shape") and hasattr(thing_b, "shape"):
+        if thing_a.shape == thing_b.shape:
+            distance = np.max(abs(thing_a - thing_b))
         else:
             # Flatten arrays so they have the same dimensions
             distance = np.max(
-                abs(thing_A.flatten().shape[0] - thing_B.flatten().shape[0])
+                abs(thing_a.flatten().shape[0] - thing_b.flatten().shape[0])
             )
     # If none of the above cases, but the objects are of the same class, call
     # the distance method of one on the other
-    elif thing_A.__class__.__name__ == thing_B.__class__.__name__:
-        if thing_A.__class__.__name__ == "function":
+    elif thing_a.__class__.__name__ == thing_b.__class__.__name__:
+        if thing_a.__class__.__name__ == "function":
             distance = 0.0
         else:
-            distance = thing_A.distance(thing_B)
+            distance = thing_a.distance(thing_b)
     else:  # Failsafe: the inputs are very far apart
         distance = 1000.0
     return distance
@@ -142,9 +142,9 @@ def distance(self, other):
         distance_list = [0.0]
         for attr_name in self.distance_criteria:
             try:
-                obj_A = getattr(self, attr_name)
-                obj_B = getattr(other, attr_name)
-                distance_list.append(distanceMetric(obj_A, obj_B))
+                obj_a = getattr(self, attr_name)
+                obj_b = getattr(other, attr_name)
+                distance_list.append(distance_metric(obj_a, obj_b))
             except AttributeError:
                 distance_list.append(
                     1000.0
@@ -155,7 +155,7 @@ class Model(object):
     """
     A class with special handling of parameters assignment.
     """
-    def assignParameters(self, **kwds):
+    def assign_parameters(self, **kwds):
         """
         Assign an arbitrary number of attributes to this agent.
 
@@ -282,7 +282,7 @@ def __init__(
         self.solution_terminal = solution_terminal  # NOQA
         self.cycles = cycles  # NOQA
         self.pseudo_terminal = pseudo_terminal  # NOQA
-        self.solveOnePeriod = NullFunc()  # NOQA
+        self.solve_one_period = NullFunc()  # NOQA
         self.tolerance = tolerance  # NOQA
         self.seed = seed  # NOQA
         self.track_vars = []  # NOQA
@@ -293,10 +293,10 @@ def __init__(
         self.read_shocks = False  # NOQA
         self.shock_history = {}
         self.history = {}
-        self.assignParameters(**kwds)  # NOQA
-        self.resetRNG()  # NOQA
+        self.assign_parameters(**kwds)  # NOQA
+        self.reset_rng()  # NOQA
 
-    def addToTimeVary(self, *params):
+    def add_to_time_vary(self, *params):
         """
         Adds any number of parameters to time_vary for this instance.
 
@@ -313,7 +313,7 @@ def addToTimeVary(self, *params):
             if param not in self.time_vary:
                 self.time_vary.append(param)
 
-    def addToTimeInv(self, *params):
+    def add_to_time_inv(self, *params):
         """
         Adds any number of parameters to time_inv for this instance.
 
@@ -330,7 +330,7 @@ def addToTimeInv(self, *params):
             if param not in self.time_inv:
                 self.time_inv.append(param)
 
-    def delFromTimeVary(self, *params):
+    def del_from_time_vary(self, *params):
         """
         Removes any number of parameters from time_vary for this instance.
 
@@ -347,7 +347,7 @@ def delFromTimeVary(self, *params):
             if param in self.time_vary:
                 self.time_vary.remove(param)
 
-    def delFromTimeInv(self, *params):
+    def del_from_time_inv(self, *params):
         """
         Removes any number of parameters from time_inv for this instance.
 
@@ -384,7 +384,7 @@ def unpack(self, parameter):
         setattr(self, parameter, list())
         for solution_t in self.solution:
             self.__dict__[parameter].append(solution_t.__dict__[parameter])
-        self.addToTimeVary(parameter)
+        self.add_to_time_vary(parameter)
 
     def solve(self, verbose=False):
         """
@@ -408,13 +408,13 @@ def solve(self, verbose=False):
         with np.errstate(
             divide="ignore", over="ignore", under="ignore", invalid="ignore"
         ):
-            self.preSolve()  # Do pre-solution stuff
-            self.solution = solveAgent(
+            self.pre_solve()  # Do pre-solution stuff
+            self.solution = solve_agent(
                 self, verbose
             )  # Solve the model by backward induction
-            self.postSolve()  # Do post-solution stuff
+            self.post_solve()  # Do post-solution stuff
 
-    def resetRNG(self):
+    def reset_rng(self):
         """
         Reset the random number generator for this type.
 
@@ -428,7 +428,7 @@ def resetRNG(self):
         """
         self.RNG = np.random.RandomState(self.seed)
 
-    def checkElementsOfTimeVaryAreLists(self):
+    def check_elements_of_time_vary_are_lists(self):
         """
         A method to check that elements of time_vary are lists.
         """
@@ -437,13 +437,13 @@ def checkElementsOfTimeVaryAreLists(self):
                 param + " is not a list, but should be" + " because it is in time_vary"
             )
 
-    def checkRestrictions(self):
+    def check_restrictions(self):
         """
         A method to check that various restrictions are met for the model class.
         """
         return
 
-    def preSolve(self):
+    def pre_solve(self):
         """
         A method that is run immediately before the model is solved, to check inputs or to prepare
         the terminal solution, perhaps.
@@ -456,11 +456,11 @@ def preSolve(self):
         -------
         none
         """
-        self.checkRestrictions()
-        self.checkElementsOfTimeVaryAreLists()
+        self.check_restrictions()
+        self.check_elements_of_time_vary_are_lists()
         return None
 
-    def postSolve(self):
+    def post_solve(self):
         """
         A method that is run immediately after the model is solved, to finalize
         the solution in some way.  Does nothing here.
@@ -475,10 +475,10 @@ def postSolve(self):
         """
         return None
 
-    def initializeSim(self):
+    def initialize_sim(self):
         """
         Prepares this AgentType for a new simulation.  Resets the internal random number generator,
-        makes initial states for all agents (using simBirth), clears histories of tracked variables.
+        makes initial states for all agents (using sim_birth), clears histories of tracked variables.
 
         Parameters
         ----------
@@ -500,7 +500,7 @@ def initializeSim(self):
                 + "that can be simulated for an agent, and must be a positive number."
             )
 
-        self.resetRNG()
+        self.reset_rng()
         self.t_sim = 0
         all_agents = np.ones(self.AgentCount, dtype=bool)
         blank_array = np.empty(self.AgentCount)
@@ -517,16 +517,16 @@ def initializeSim(self):
         self.t_cycle = np.zeros(
             self.AgentCount, dtype=int
         )  # Which cycle period each agent is on
-        self.simBirth(all_agents)
-        self.clearHistory()
+        self.sim_birth(all_agents)
+        self.clear_history()
         return None
 
-    def simOnePeriod(self):
+    def sim_one_period(self):
         """
-        Simulates one period for this type.  Calls the methods getMortality(), getShocks() or
-        readShocks, getStates(), getControls(), and getPostStates().  These should be defined for
-        AgentType subclasses, except getMortality (define its components simDeath and simBirth
-        instead) and readShocks.
+        Simulates one period for this type.  Calls the methods get_mortality(), get_shocks() or
+        read_shocks, get_states(), get_controls(), and get_poststates().  These should be defined for
+        AgentType subclasses, except get_mortality (define its components sim_death and sim_birth
+        instead) and read_shocks.
 
         Parameters
         ----------
@@ -543,7 +543,7 @@ def simOnePeriod(self):
             )
 
         # Mortality adjusts the agent population
-        self.getMortality()  # Replace some agents with "newborns"
+        self.get_mortality()  # Replace some agents with "newborns"
 
         # state_{t-1}
         for var in self.state_now:
@@ -556,12 +556,12 @@ def simOnePeriod(self):
                 pass
 
         if self.read_shocks:  # If shock histories have been pre-specified, use those
-            self.readShocks()
+            self.read_shocks_from_history()
         else:  # Otherwise, draw shocks as usual according to subclass-specific method
-            self.getShocks()
-        self.getStates()  # Determine each agent's state at decision time
-        self.getControls()  # Determine each agent's choice or control variables based on states
-        self.getPostStates()  # Move now state_now to state_prev
+            self.get_shocks()
+        self.get_states()  # Determine each agent's state at decision time
+        self.get_controls()  # Determine each agent's choice or control variables based on states
+        self.get_poststates()  # Move now state_now to state_prev
 
         # Advance time for all agents
         self.t_age = self.t_age + 1  # Age all consumers by one period
@@ -570,7 +570,7 @@ def simOnePeriod(self):
             self.t_cycle == self.T_cycle
         ] = 0  # Resetting to zero for those who have reached the end
 
-    def makeShockHistory(self):
+    def make_shock_history(self):
         """
         Makes a pre-specified history of shocks for the simulation.  Shock variables should be named
         in self.shock_vars, a list of strings that is subclass-specific.  This method runs a subset
@@ -588,7 +588,7 @@ def makeShockHistory(self):
         None
         """
         # Re-initialize the simulation
-        self.initializeSim()
+        self.initialize_sim()
 
         # Make blank history arrays for each shock variable (and mortality)
         for var_name in self.shock_vars:
@@ -601,9 +601,9 @@ def makeShockHistory(self):
 
         # Make and store the history of shocks for each period
         for t in range(self.T_sim):
-            self.getMortality()
+            self.get_mortality()
             self.shock_history["who_dies"][t, :] = self.who_dies
-            self.getShocks()
+            self.get_shocks()
             for var_name in self.shock_vars:
                 self.shock_history[var_name][self.t_sim, :] = self.shocks[var_name]
 
@@ -617,12 +617,12 @@ def makeShockHistory(self):
         # Flag that shocks can be read rather than simulated
         self.read_shocks = True
 
-    def getMortality(self):
+    def get_mortality(self):
         """
-        Simulates mortality or agent turnover according to some model-specific rules named simDeath
-        and simBirth (methods of an AgentType subclass).  simDeath takes no arguments and returns
+        Simulates mortality or agent turnover according to some model-specific rules named sim_death
+        and sim_birth (methods of an AgentType subclass).  sim_death takes no arguments and returns
         a Boolean array of size AgentCount, indicating which agents of this type have "died" and
-        must be replaced.  simBirth takes such a Boolean array as an argument and generates initial
+        must be replaced.  sim_birth takes such a Boolean array as an argument and generates initial
         post-decision states for those agent indices.
 
         Parameters
@@ -636,12 +636,12 @@ def getMortality(self):
         if self.read_shocks:
             who_dies = self.shock_history["who_dies"][self.t_sim, :]
         else:
-            who_dies = self.simDeath()
-        self.simBirth(who_dies)
+            who_dies = self.sim_death()
+        self.sim_birth(who_dies)
         self.who_dies = who_dies
         return None
 
-    def simDeath(self):
+    def sim_death(self):
         """
         Determines which agents in the current population "die" or should be replaced.  Takes no
         inputs, returns a Boolean array of size self.AgentCount, which has True for agents who die
@@ -660,7 +660,7 @@ def simDeath(self):
         who_dies = np.zeros(self.AgentCount, dtype=bool)
         return who_dies
 
-    def simBirth(self, which_agents):
+    def sim_birth(self, which_agents):
         """
         Makes new agents for the simulation.  Takes a boolean array as an input, indicating which
         agent indices are to be "born".  Does nothing by default, must be overwritten by a subclass.
@@ -674,10 +674,10 @@ def simBirth(self, which_agents):
         -------
         None
         """
-        print("AgentType subclass must define method simBirth!")
+        print("AgentType subclass must define method sim_birth!")
         return None
 
-    def getShocks(self):
+    def get_shocks(self):
         """
         Gets values of shock variables for the current period.  Does nothing by default, but can
         be overwritten by subclasses of AgentType.
@@ -692,14 +692,14 @@ def getShocks(self):
         """
         return None
 
-    def readShocks(self):
+    def read_shocks_from_history(self):
         """
         Reads values of shock variables for the current period from history arrays.
         For each variable X named in self.shock_vars, this attribute of self is
         set to self.history[X][self.t_sim,:].
 
         This method is only ever called if self.read_shocks is True.  This can
-        be achieved by using the method makeShockHistory() (or manually after
+        be achieved by using the method make_shock_history() (or manually after
         storing a "handcrafted" shock history).
 
         Parameters
@@ -713,7 +713,7 @@ def readShocks(self):
         for var_name in self.shock_vars:
             self.shocks[var_name] = self.shock_history[var_name][self.t_sim, :]
 
-    def getStates(self):
+    def get_states(self):
         """
         Gets values of state variables for the current period.
         By default, calls transition function and assigns values
@@ -755,7 +755,7 @@ def transition(self):
 
         return ()
 
-    def getControls(self):
+    def get_controls(self):
         """
         Gets values of control variables for the current period, probably by using current states.
         Does nothing by default, but can be overwritten by subclasses of AgentType.
@@ -770,7 +770,7 @@ def getControls(self):
         """
         return None
 
-    def getPostStates(self):
+    def get_poststates(self):
         """
         Gets values of post-decision state variables for the current period, 
         probably by current
@@ -778,6 +778,9 @@ def getPostStates(self):
         Does nothing by
         default, but can be overwritten by subclasses of AgentType.
 
+        DEPRECATED: New models should use the state now/previous rollover
+        functionality instead of poststates.
+
         Parameters
         ----------
         None
@@ -808,7 +811,7 @@ def simulate(self, sim_periods=None):
         if not hasattr(self, "t_sim"):
             raise Exception(
                 "It seems that the simulation variables were not initialize before calling "
-                + "simulate(). Call initializeSim() to initialize the variables before calling simulate() again."
+                + "simulate(). Call initialize_sim() to initialize the variables before calling simulate() again."
             )
 
         if not hasattr(self, "T_sim"):
@@ -822,7 +825,7 @@ def simulate(self, sim_periods=None):
             raise Exception(
                 "To simulate, sim_periods has to be larger than the maximum data set size "
                 + "T_sim. Either increase the attribute T_sim of this agent type instance "
-                + "and call the initializeSim() method again, or set sim_periods <= T_sim."
+                + "and call the initialize_sim() method again, or set sim_periods <= T_sim."
             )
 
         # Ignore floating point "errors". Numpy calls it "errors", but really it's excep-
@@ -835,7 +838,7 @@ def simulate(self, sim_periods=None):
                 sim_periods = self.T_sim
 
             for t in range(sim_periods):
-                self.simOnePeriod()
+                self.sim_one_period()
 
                 for var_name in self.track_vars:
                     if var_name in self.state_now:
@@ -852,7 +855,7 @@ def simulate(self, sim_periods=None):
 
             return self.history
 
-    def clearHistory(self):
+    def clear_history(self):
         """
         Clears the histories of the attributes named in self.track_vars.
 
@@ -868,7 +871,7 @@ def clearHistory(self):
             self.history[var_name] = np.empty((self.T_sim, self.AgentCount)) + np.nan
 
 
-def solveAgent(agent, verbose):
+def solve_agent(agent, verbose):
     """
     Solve the dynamic model for one agent type
     using backwards induction.
@@ -909,7 +912,7 @@ def solveAgent(agent, verbose):
         t_last = time()
     while go:
         # Solve a cycle of the model, recording it if horizon is finite
-        solution_cycle = solveOneCycle(agent, solution_last)
+        solution_cycle = solve_one_cycle(agent, solution_last)
         if not infinite_horizon:
             solution = solution_cycle + solution
 
@@ -973,7 +976,7 @@ def solveAgent(agent, verbose):
     return solution
 
 
-def solveOneCycle(agent, solution_last):
+def solve_one_cycle(agent, solution_last):
     """
     Solve one "cycle" of the dynamic model for one agent type.  This function
     iterates over the periods within an agent's cycle, updating the time-varying
@@ -1011,15 +1014,15 @@ def solveOneCycle(agent, solution_last):
     solution_next = solution_last
     for t in range(T):
         # Update which single period solver to use (if it depends on time)
-        if hasattr(agent.solveOnePeriod, "__getitem__"):
-            solveOnePeriod = agent.solveOnePeriod[T - 1 - t]
+        if hasattr(agent.solve_one_period, "__getitem__"):
+            solve_one_period = agent.solve_one_period[T - 1 - t]
         else:
-            solveOnePeriod = agent.solveOnePeriod
+            solve_one_period = agent.solve_one_period
 
-        if hasattr(solveOnePeriod, "solver_args"):
-            these_args = solveOnePeriod.solver_args
+        if hasattr(solve_one_period, "solver_args"):
+            these_args = solve_one_period.solver_args
         else:
-            these_args = getArgNames(solveOnePeriod)
+            these_args = get_arg_names(solve_one_period)
 
         # Update time-varying single period inputs
         for name in agent.time_vary:
@@ -1032,7 +1035,7 @@ def solveOneCycle(agent, solution_last):
         temp_dict = {name: solve_dict[name] for name in these_args}
 
         # Solve one period, add it to the solution, and move to the next period
-        solution_t = solveOnePeriod(**temp_dict)
+        solution_t = solve_one_period(**temp_dict)
         solution_cycle.insert(0, solution_t)
         solution_next = solution_t
 
@@ -1040,7 +1043,7 @@ def solveOneCycle(agent, solution_last):
     return solution_cycle
 
 
-def makeOnePeriodOOSolver(solver_class):
+def make_one_period_oo_solver(solver_class):
     """
     Returns a function that solves a single period consumption-saving
     problem.
@@ -1053,7 +1056,7 @@ def makeOnePeriodOOSolver(solver_class):
         A function for solving one period of a problem.
     """
 
-    def onePeriodSolver(**kwds):
+    def one_period_solver(**kwds):
         solver = solver_class(**kwds)
 
         # not ideal; better if this is defined in all Solver classes
@@ -1063,11 +1066,11 @@ def onePeriodSolver(**kwds):
         solution_now = solver.solve()
         return solution_now
 
-    onePeriodSolver.solver_class = solver_class
+    one_period_solver.solver_class = solver_class
     # This can be revisited once it is possible to export parameters
-    onePeriodSolver.solver_args = getArgNames(solver_class.__init__)[1:]
+    one_period_solver.solver_args = get_arg_names(solver_class.__init__)[1:]
 
-    return onePeriodSolver
+    return one_period_solver
 
 
 # ========================================================================
@@ -1100,11 +1103,11 @@ class Market(Model):
         This is often a subset of sow_vars.
     dyn_vars : [string]
         Names of variables that constitute a "dynamic rule".
-    millRule : function
+    mill_rule : function
         A function that takes inputs named in reap_vars and returns a tuple the same size and order as sow_vars.  The "aggregate market process" that
         transforms individual agent actions/states/data into aggregate data to
         be sent back to agents.
-    calcDynamics : function
+    calc_dynamics : function
         A function that takes inputs named in track_vars and returns an object
         with attributes named in dyn_vars.  Looks at histories of aggregate
         variables and generates a new "dynamic rule" for agents to believe and
@@ -1125,8 +1128,8 @@ def __init__(
         const_vars=None,
         track_vars=None,
         dyn_vars=None,
-        millRule=None,
-        calcDynamics=None,
+        mill_rule=None,
+        calc_dynamics=None,
         act_T=1000,
         tolerance=0.000001,
         **kwds
@@ -1149,22 +1152,22 @@ def __init__(
         self.track_vars = track_vars if track_vars is not None else list()  # NOQA
         self.dyn_vars = dyn_vars if dyn_vars is not None else list()  # NOQA
 
-        if millRule is not None:  # To prevent overwriting of method-based millRules
-            self.millRule = millRule
-        if calcDynamics is not None:  # Ditto for calcDynamics
-            self.calcDynamics = calcDynamics
+        if mill_rule is not None:  # To prevent overwriting of method-based mill_rules
+            self.mill_rule = mill_rule
+        if calc_dynamics is not None:  # Ditto for calc_dynamics
+            self.calc_dynamics = calc_dynamics
         self.act_T = act_T  # NOQA
         self.tolerance = tolerance  # NOQA
         self.max_loops = 1000  # NOQA
         self.history = {}
-        self.assignParameters(**kwds)
+        self.assign_parameters(**kwds)
 
         self.print_parallel_error_once = True
         # Print the error associated with calling the parallel method
-        # "solveAgents" one time. If set to false, the error will never
-        # print. See "solveAgents" for why this prints once or never.
+        # "solve_agents" one time. If set to false, the error will never
+        # print. See "solve_agents" for why this prints once or never.
 
-    def solveAgents(self):
+    def solve_agents(self):
         """
         Solves the microeconomic problem for all AgentTypes in this market.
 
@@ -1177,13 +1180,13 @@ def solveAgents(self):
         None
         """
         try:
-            multiThreadCommands(self.agents, ["solve()"])
+            multi_thread_commands(self.agents, ["solve()"])
         except Exception as err:
             if self.print_parallel_error_once:
                 # Set flag to False so this is only printed once.
                 self.print_parallel_error_once = False
                 print(
-                    "**** WARNING: could not execute multiThreadCommands in HARK.core.Market.solveAgents() ",
+                    "**** WARNING: could not execute multi_thread_commands in HARK.core.Market.solve_agents() ",
                     "so using the serial version instead. This will likely be slower. "
                     "The multiTreadCommands() functions failed with the following error:",
                     "\n",
@@ -1191,7 +1194,7 @@ def solveAgents(self):
                     ":",
                     err,
                 )  # sys.exc_info()[0])
-            multiThreadCommandsFake(self.agents, ["solve()"])
+            multi_thread_commands_fake(self.agents, ["solve()"])
 
     def solve(self):
         """
@@ -1213,9 +1216,9 @@ def solve(self):
         old_dynamics = None
 
         while go:  # Loop until the dynamic process converges or we hit the loop cap
-            self.solveAgents()  # Solve each AgentType's micro problem
-            self.makeHistory()  # "Run" the model while tracking aggregate variables
-            new_dynamics = self.updateDynamics()  # Find a new aggregate dynamic rule
+            self.solve_agents()  # Solve each AgentType's micro problem
+            self.make_history()  # "Run" the model while tracking aggregate variables
+            new_dynamics = self.update_dynamics()  # Find a new aggregate dynamic rule
 
             # Check to see if the dynamic rule has converged (if this is not the first loop)
             if completed_loops > 0:
@@ -1278,7 +1281,7 @@ def sow(self):
 
     def mill(self):
         """
-        Processes the variables collected from agents using the function millRule,
+        Processes the variables collected from agents using the function mill_rule,
         storing the results in attributes named in aggr_sow.
 
         Parameters
@@ -1289,12 +1292,12 @@ def mill(self):
         -------
         none
         """
-        # Make a dictionary of inputs for the millRule
+        # Make a dictionary of inputs for the mill_rule
         mill_dict = copy(self.reap_state)
         mill_dict.update(self.const_vars)
 
-        # Run the millRule and store its output in self
-        product = self.millRule(**mill_dict)
+        # Run the mill_rule and store its output in self
+        product = self.mill_rule(**mill_dict)
 
         for i, sow_var in enumerate(self.sow_state):
             self.sow_state[sow_var] = product[i]
@@ -1370,7 +1373,7 @@ def store(self):
 
             self.history[var_name].append(value_now)
 
-    def makeHistory(self):
+    def make_history(self):
         """
         Runs a loop of sow-->cultivate-->reap-->mill act_T times, tracking the
         evolution of variables X named in track_vars in dictionary fields
@@ -1392,7 +1395,7 @@ def makeHistory(self):
             self.mill()  # Process individual data into aggregate data
             self.store()  # Record variables of interest
 
-    def updateDynamics(self):
+    def update_dynamics(self):
         """
         Calculates a new "aggregate dynamic rule" using the history of variables
         named in track_vars, and distributes this rule to AgentTypes in agents.
@@ -1409,12 +1412,12 @@ def updateDynamics(self):
         """
         # Make a dictionary of inputs for the dynamics calculator
         history_vars_string = ""
-        arg_names = list(getArgNames(self.calcDynamics))
+        arg_names = list(get_arg_names(self.calc_dynamics))
         if "self" in arg_names:
             arg_names.remove("self")
         update_dict = {name: self.history[name] for name in arg_names}
         # Calculate a new dynamic rule and distribute it to the agents in agent_list
-        dynamics = self.calcDynamics(**update_dict)  # User-defined dynamics calculator
+        dynamics = self.calc_dynamics(**update_dict)  # User-defined dynamics calculator
         for var_name in self.dyn_vars:
             this_obj = getattr(dynamics, var_name)
             for this_type in self.agents:
@@ -1422,7 +1425,7 @@ def updateDynamics(self):
         return dynamics
 
 
-def distributeParams(agent, param_name, param_count, distribution):
+def distribute_params(agent, param_name, param_count, distribution):
     """
     Distributes heterogeneous values of one parameter to the AgentTypes in self.agents.
     Parameters
diff --git a/HARK/datasets/SCF/WealthIncomeDist/README.md b/HARK/datasets/SCF/WealthIncomeDist/README.md
index 4437f8f8e..8aa3619f9 100644
--- a/HARK/datasets/SCF/WealthIncomeDist/README.md
+++ b/HARK/datasets/SCF/WealthIncomeDist/README.md
@@ -31,6 +31,6 @@ columns, described by groups:
 # SCFDistTools.py
 
 Contains functions to read the table and its columns, and convert them to
-parameters to be used by HARK's `AgentType` classes in their `simBirth()`
+parameters to be used by HARK's `AgentType` classes in their `sim_birth()`
 methods to produce realistically calibrated distributions of initial permanent
 income and wealth levels.
diff --git a/HARK/datasets/SCF/WealthIncomeDist/SCFDistTools.py b/HARK/datasets/SCF/WealthIncomeDist/SCFDistTools.py
index 887e4150d..454458f18 100644
--- a/HARK/datasets/SCF/WealthIncomeDist/SCFDistTools.py
+++ b/HARK/datasets/SCF/WealthIncomeDist/SCFDistTools.py
@@ -143,8 +143,8 @@ def income_wealth_dists_from_scf(base_year, age=None, education=None, wave=None)
     Finds and formats parameters for the initial distributions of permanent
     income and normalized wealth from the SCF's summary statistics.
     
-    Many of HARK's models (e.g. PerfForesightConsumerType.simBirth(),
-    GenIncProcessConsumerType.simBirth()) assume the initial distribution
+    Many of HARK's models (e.g. PerfForesightConsumerType.sim_birth(),
+    GenIncProcessConsumerType.sim_birth()) assume the initial distribution
     of permanent income (pLvl) and normalized wealth (aNrm) are log-normal.
     They construct these distributions from their means and standard
     deviations, which are parameters to the models. This fuction assigns these
diff --git a/HARK/dcegm.py b/HARK/dcegm.py
index f13213b53..0f6193d09 100644
--- a/HARK/dcegm.py
+++ b/HARK/dcegm.py
@@ -10,7 +10,7 @@
 from HARK.interpolation import LinearInterp
 
 
-def calcCrossPoints(mGrid, condVs, optIdx):
+def calc_cross_points(mGrid, condVs, optIdx):
     """
     Given a grid of m values, a matrix of the conditional values of different
     actions at every grid point, and a vector indicating the optimal action
@@ -85,14 +85,14 @@ def calcCrossPoints(mGrid, condVs, optIdx):
 
         # Find crossing points. Returns a list (m,v) tuples. Keep m's only
         xing_points = [
-            calcLinearCrossing(switchMs[i, :], left_v[i, :], right_v[i, :])
+            calc_linear_crossing(switchMs[i, :], left_v[i, :], right_v[i, :])
             for i in range(segments.shape[0])
         ]
 
         return xing_points, segments
 
 
-def calcPrimKink(mGrid, vTGrids, Choices):
+def calc_prim_kink(mGrid, vTGrids, choices):
     """
     Parameters
     ----------
@@ -100,7 +100,7 @@ def calcPrimKink(mGrid, vTGrids, Choices):
         Common m grid
     vTGrids : [np.array], length  = # choices, each element has length = len(mGrid)
         value functions evaluated on the common m grid.
-    Choices : [np.array], length  = # choices, each element has length = len(mGrid)
+    choices : [np.array], length  = # choices, each element has length = len(mGrid)
         Optimal choices. In the form of choice probability vectors that must
         be degenerate
 
@@ -120,10 +120,10 @@ def calcPrimKink(mGrid, vTGrids, Choices):
         idx = Choices[i] == 1
         optChoice[idx] = i
 
-    return calcCrossPoints(mGrid, vTGrids.T, optChoice)
+    return calc_cross_points(mGrid, vTGrids.T, optChoice)
 
 
-def calcSegments(x, v):
+def calc_segments(x, v):
     """
     Find index vectors `rise` and `fall` such that `rise` holds the indeces `i`
     such that x[i+1]>x[i] and `fall` holds indeces `j` such that either
@@ -206,7 +206,7 @@ def calcSegments(x, v):
 # in all nan slices to a valueerror...it's nans, aaarghgghg
 
 
-def calcLinearCrossing(m, left_v, right_v):
+def calc_linear_crossing(m, left_v, right_v):
     """
     Computes the intersection between two line segments, defined by two common
     x points, and the values of both segments at both x points
@@ -244,7 +244,7 @@ def calcLinearCrossing(m, left_v, right_v):
             return (m[0] + h, left_v[0] + h * s0)
 
 
-def calcMultilineEnvelope(M, C, V_T, commonM, findXings=False):
+def calc_multiline_envelope(M, C, V_T, commonM, find_crossings=False):
     """
     Do the envelope step of the DCEGM algorithm. Takes in market ressources,
     consumption levels, and inverse values from the EGM step. These represent
@@ -261,7 +261,7 @@ def calcMultilineEnvelope(M, C, V_T, commonM, findXings=False):
         transformed values at the EGM grid
     commonM : np.array
         common grid to do upper envelope calculations on
-    findXings: boolean
+    find_crossings: boolean
         should the exact crossing points of segments be computed and added to
         the grids?
     Returns
@@ -270,13 +270,13 @@ def calcMultilineEnvelope(M, C, V_T, commonM, findXings=False):
 
     """
     m_len = len(commonM)
-    rise, fall = calcSegments(M, V_T)
+    rise, fall = calc_segments(M, V_T)
 
     num_kinks = len(fall)  # number of kinks / falling EGM grids
 
     # Use these segments to sequentially find upper envelopes. commonVARNAME
     # means the VARNAME evaluated on the common grid with a cloumn for each kink
-    # discovered in calcSegments. This means that commonVARNAME is a matrix
+    # discovered in calc_segments. This means that commonVARNAME is a matrix
     # common grid length-by-number of segments to consider. In the end, we'll
     # use nanargmax over the columns to pick out the best (transformed) values.
     # This is why we fill the arrays with np.nan's.
@@ -288,7 +288,7 @@ def calcMultilineEnvelope(M, C, V_T, commonM, findXings=False):
     # Now, loop over all segments as defined by the "kinks" or the combination
     # of "rise" and "fall" indeces. These (rise[j], fall[j]) pairs define regions.
 
-    if findXings:
+    if find_crossings:
         # We'll save V_T and C interpolating functions to aid crossing points later
         vT_funcs = []
         c_funcs = []
@@ -310,7 +310,7 @@ def calcMultilineEnvelope(M, C, V_T, commonM, findXings=False):
 
         # If we need to compute the xing points, create and store the
         # interpolating functions. Else simply create them.
-        if findXings:
+        if find_crossings:
             # Create and store interpolating functions
             vT_funcs.append(LinearInterp(m_idx_j, V_T[idxs], lower_extrap=True))
             c_funcs.append(LinearInterp(m_idx_j, C[idxs], lower_extrap=True))
@@ -376,13 +376,13 @@ def calcMultilineEnvelope(M, C, V_T, commonM, findXings=False):
 
     # If crossing points are requested, compute them. Else just return the
     # envelope.
-    if not findXings:
+    if not find_crossings:
 
         return upperM, upperC, upperV_T
 
     else:
 
-        xing_points, segments = calcCrossPoints(commonM, commonV_T, idx_max)
+        xing_points, segments = calc_cross_points(commonM, commonV_T, idx_max)
         # keep only the m component of crossing points.
         xing_points = [x[0] for x in xing_points]
 
diff --git a/HARK/distribution.py b/HARK/distribution.py
index 0df463a04..b3c108a0a 100644
--- a/HARK/distribution.py
+++ b/HARK/distribution.py
@@ -597,28 +597,28 @@ def draw(self, N, X=None, exact_match=False):
         return draws
 
 
-def approxLognormalGaussHermite(N, mu=0.0, sigma=1.0, seed=0):
+def approx_lognormal_gauss_hermite(N, mu=0.0, sigma=1.0, seed=0):
     d = Normal(mu, sigma).approx(N)
     return DiscreteDistribution(d.pmf, np.exp(d.X), seed=seed)
 
 
-def calcNormalStyleParsFromLognormalPars(avgLognormal, stdLognormal):
-    varLognormal = stdLognormal ** 2
-    avgNormal = math.log(avgLognormal / math.sqrt(1 + varLognormal / avgLognormal ** 2))
-    varNormal = math.sqrt(math.log(1 + varLognormal / avgLognormal ** 2))
-    stdNormal = math.sqrt(varNormal)
-    return avgNormal, stdNormal
+def calc_normal_style_pars_from_lognormal_pars(avg_lognormal, std_lognormal):
+    varLognormal = std_lognormal ** 2
+    avgNormal = math.log(avg_lognormal / math.sqrt(1 + varLognormal / avg_lognormal ** 2))
+    varNormal = math.sqrt(math.log(1 + varLognormal / avg_lognormal ** 2))
+    std_normal = math.sqrt(varNormal)
+    return avgNormal, std_normal
 
 
-def calcLognormalStyleParsFromNormalPars(muNormal, stdNormal):
-    varNormal = stdNormal ** 2
-    avgLognormal = math.exp(muNormal + varNormal * 0.5)
-    varLognormal = (math.exp(varNormal) - 1) * math.exp(2 * muNormal + varNormal)
-    stdLognormal = math.sqrt(varLognormal)
-    return avgLognormal, stdLognormal
+def calc_lognormal_style_pars_from_normal_pars(mu_normal, std_normal):
+    varNormal = std_normal ** 2
+    avg_lognormal = math.exp(mu_normal + varNormal * 0.5)
+    varLognormal = (math.exp(varNormal) - 1) * math.exp(2 * mu_normal + varNormal)
+    std_lognormal = math.sqrt(varLognormal)
+    return avg_lognormal, std_lognormal
 
 
-def approxBeta(N, a=1.0, b=1.0):
+def approx_beta(N, a=1.0, b=1.0):
     """
     Calculate a discrete approximation to the beta distribution.  May be quite
     slow, as it uses a rudimentary numeric integration method to generate the
@@ -646,7 +646,7 @@ def approxBeta(N, a=1.0, b=1.0):
     return DiscreteDistribution(pmf, X)
 
 
-def makeMarkovApproxToNormal(x_grid, mu, sigma, K=351, bound=3.5):
+def make_markov_approx_to_normal(x_grid, mu, sigma, K=351, bound=3.5):
     """
     Creates an approximation to a normal distribution with mean mu and standard
     deviation sigma, returning a stochastic vector called p_vec, corresponding
@@ -715,7 +715,7 @@ def makeMarkovApproxToNormal(x_grid, mu, sigma, K=351, bound=3.5):
     return p_vec
 
 
-def makeMarkovApproxToNormalByMonteCarlo(x_grid, mu, sigma, N_draws=10000):
+def make_markov_approx_to_normal_by_monte_carlo(x_grid, mu, sigma, N_draws=10000):
     """
     Creates an approximation to a normal distribution with mean mu and standard
     deviation sigma, by Monte Carlo.
@@ -765,7 +765,7 @@ def makeMarkovApproxToNormalByMonteCarlo(x_grid, mu, sigma, N_draws=10000):
     return p_vec
 
 
-def makeTauchenAR1(N, sigma=1.0, rho=0.9, bound=3.0):
+def make_tauchen_ar1(N, sigma=1.0, rho=0.9, bound=3.0):
     """
     Function to return a discretized version of an AR1 process.
     See http://www.fperri.net/TEACHING/macrotheory08/numerical.pdf for details
@@ -812,7 +812,7 @@ def makeTauchenAR1(N, sigma=1.0, rho=0.9, bound=3.0):
 # ================================================================================
 
 
-def addDiscreteOutcomeConstantMean(distribution, x, p, sort=False):
+def add_discrete_outcome_constant_mean(distribution, x, p, sort=False):
     """
     Adds a discrete outcome of x with probability p to an existing distribution,
     holding constant the relative probabilities of other outcomes and overall mean.
@@ -845,7 +845,7 @@ def addDiscreteOutcomeConstantMean(distribution, x, p, sort=False):
     return DiscreteDistribution(pmf, X)
 
 
-def addDiscreteOutcome(distribution, x, p, sort=False):
+def add_discrete_outcome(distribution, x, p, sort=False):
     """
     Adds a discrete outcome of x with probability p to an existing distribution,
     holding constant the relative probabilities of other outcomes.
@@ -877,7 +877,7 @@ def addDiscreteOutcome(distribution, x, p, sort=False):
     return DiscreteDistribution(pmf, X)
 
 
-def combineIndepDstns(*distributions, seed=0):
+def combine_indep_dstns(*distributions, seed=0):
     """
     Given n lists (or tuples) whose elements represent n independent, discrete
     probability spaces (probabilities and values), construct a joint pmf over
@@ -955,7 +955,7 @@ def combineIndepDstns(*distributions, seed=0):
     assert np.isclose(np.sum(P_out), 1), "Probabilities do not sum to 1!"
     return DiscreteDistribution(P_out, X_out, seed=seed)
 
-def calcExpectation(dstn,func=lambda x : x,*args):
+def calc_expectation(dstn,func=lambda x : x,*args):
     '''
     Calculate the expectation of a stochastic function at an array of values.
 
diff --git a/HARK/estimation.py b/HARK/estimation.py
index 69547fda6..4f2cc7bf7 100644
--- a/HARK/estimation.py
+++ b/HARK/estimation.py
@@ -12,15 +12,15 @@
 from joblib import Parallel, delayed
 
 __all__ = [
-    "minimizeNelderMead",
-    "minimizePowell",
-    "bootstrapSampleFromData",
+    "minimize_nelder_mead",
+    "minimize_powell",
+    "bootstrap_sample_from_data",
     "parallelNelderMead",
 ]
 
 
-def minimizeNelderMead(
-    objectiveFunction, parameter_guess, verbose=False, which_vars=None, **kwargs
+def minimize_nelder_mead(
+    objective_func, parameter_guess, verbose=False, which_vars=None, **kwargs
 ):
     """
     Minimizes the objective function using the Nelder-Mead simplex algorithm,
@@ -28,12 +28,12 @@ def minimizeNelderMead(
     
     Parameters
     ----------
-    objectiveFunction : function
+    objective_func : function
         The function to be minimized.  It should take only a single argument, which
         should be a list representing the parameters to be estimated.
     parameter_guess : [float]
         A starting point for the Nelder-Mead algorithm, which must be a valid
-        input for objectiveFunction.
+        input for objective_func.
     which_vars : np.array or None
         Array of booleans indicating which parameters should be estimated.  When
         not provided, estimation is performed on all parameters.
@@ -43,16 +43,16 @@ def minimizeNelderMead(
     Returns
     -------
     xopt : [float]
-        The values that minimize objectiveFunction.
+        The values that minimize objective_func.
     """
     # Specify a temporary "modified objective function" that restricts parameters to be estimated
     if which_vars is None:
         which_vars = np.ones(len(parameter_guess), dtype=bool)
 
-    def objectiveFunctionMod(params):
+    def objective_func_mod(params):
         params_full = np.copy(parameter_guess)
         params_full[which_vars] = params
-        out = objectiveFunction(params_full)
+        out = objective_func(params_full)
         return out
 
     # convert parameter guess to np array to slice it with boolean array
@@ -61,7 +61,7 @@ def objectiveFunctionMod(params):
     # Execute the minimization, starting from the given parameter guess
     t0 = time()  # Time the process
     OUTPUT = fmin(
-        objectiveFunctionMod, parameter_guess_mod, full_output=1, disp=verbose, **kwargs
+        objective_func_mod, parameter_guess_mod, full_output=1, disp=verbose, **kwargs
     )
     t1 = time()
 
@@ -96,32 +96,32 @@ def objectiveFunctionMod(params):
     return xopt_full
 
 
-def minimizePowell(objectiveFunction, parameter_guess, verbose=False):
+def minimize_powell(objective_func, parameter_guess, verbose=False):
     """
     Minimizes the objective function using a derivative-free Powell algorithm,
     starting from an initial parameter guess.
 
     Parameters
     ----------
-    objectiveFunction : function
+    objective_func : function
         The function to be minimized.  It should take only a single argument, which
         should be a list representing the parameters to be estimated.
     parameter_guess : [float]
         A starting point for the Powell algorithm, which must be a valid
-        input for objectiveFunction.
+        input for objective_func.
     verbose : boolean
         A flag for the amount of output to print.
 
     Returns
     -------
     xopt : [float]
-        The values that minimize objectiveFunction.
+        The values that minimize objective_func.
     """
 
     # Execute the minimization, starting from the given parameter guess
     t0 = time()  # Time the process
     OUTPUT = fmin_powell(
-        objectiveFunction, parameter_guess, full_output=1, maxiter=1000, disp=verbose
+        objective_func, parameter_guess, full_output=1, maxiter=1000, disp=verbose
     )
     t1 = time()
 
@@ -158,7 +158,7 @@ def minimizePowell(objectiveFunction, parameter_guess, verbose=False):
     return xopt
 
 
-def bootstrapSampleFromData(data, weights=None, seed=0):
+def bootstrap_sample_from_data(data, weights=None, seed=0):
     """
     Samples rows from the input array of data, generating a new data array with
     an equal number of rows (records).  Rows are drawn with equal probability
@@ -197,7 +197,7 @@ def bootstrapSampleFromData(data, weights=None, seed=0):
 
 
 def parallelNelderMead(
-    objFunc,
+    obj_func,
     guess,
     perturb=None,
     P=1,
@@ -223,15 +223,15 @@ def parallelNelderMead(
     
     Parameters
     ----------
-    objFunc : function
+    obj_func : function
         The objective function to be minimized. Takes a single 1D array as input.
     guess : np.array
-        Initial starting point for the simplex, representing an input for objFunc.
+        Initial starting point for the simplex, representing an input for obj_func.
     perturb : np.array
         Perturbation vector for the simplex, of the same length as an input to
-        objFunc.  If perturb[j] is non-zero, a simplex point will be created
+        obj_func.  If perturb[j] is non-zero, a simplex point will be created
         that perturbs the j-th element of guess by perturb[j]; if it is zero,
-        then the j-th parameter of objFunc will not be optimized over.  By
+        then the j-th parameter of obj_func will not be optimized over.  By
         default, perturb=None, indicating that all parameters should be optimized,
         with an initial perturbation of 0.1*guess.
     P : int
@@ -249,7 +249,7 @@ def parallelNelderMead(
         Maximum number of Nelder-Mead iterations; reaching iters=maxiter is
         reported as an "unsuccessful" minimization.
     maxeval : int
-        Maximum number of evaluations of objFunc (across all processes); reaching
+        Maximum number of evaluations of obj_func (across all processes); reaching
         evals=maxeval is reported as an "unsuccessful" minimization.
     r_param: float
         Parameter indicating magnitude of the reflection point calculation.
@@ -279,13 +279,13 @@ def parallelNelderMead(
     Returns
     -------
     min_point : np.array
-        The input that minimizes objFunc, as found by the minimization.
+        The input that minimizes obj_func, as found by the minimization.
     fmin : float
-        The minimum of objFunc; fmin = objFunc(min_point).
+        The minimum of obj_func; fmin = obj_func(min_point).
     """
     # If this is a resumed search, load the data
     if resume:
-        simplex, fvals, iters, evals = loadNelderMeadData(name)
+        simplex, fvals, iters, evals = load_nelder_mead_data(name)
         dim_count = fvals.size - 1
         N = dim_count + 1  # Number of points in simplex
         K = simplex.shape[1]  # Total number of parameters
@@ -338,7 +338,7 @@ def parallelNelderMead(
     # Begin a new Nelder-Mead search
     if not resume:
         temp_simplex = list(simplex)  # Evaluate the initial simplex
-        fvals = np.array(parallel(delayed(objFunc)(params) for params in temp_simplex))
+        fvals = np.array(parallel(delayed(obj_func)(params) for params in temp_simplex))
         evals += N
         # Reorder the initial simplex
         order = np.argsort(fvals)
@@ -359,7 +359,7 @@ def parallelNelderMead(
                 + str(x_dist)
             )
         if savefreq is not None:
-            saveNelderMeadData(name, simplex, fvals, iters, evals)
+            save_nelder_mead_data(name, simplex, fvals, iters, evals)
             if verbose > 0:
                 print("Saved search progress in " + name + ".txt")
     else:  # Resume an existing search that was cut short
@@ -386,7 +386,7 @@ def parallelNelderMead(
 
         # Update the P worst points of the simplex
         output = parallel(
-            delayed(parallelNelderMeadWorker)(objFunc, simplex, fvals, j, P, opt_params)
+            delayed(parallel_nelder_mead_worker)(obj_func, simplex, fvals, j, P, opt_params)
             for j in j_list
         )
         new_subsimplex = np.zeros((P, K)) + np.nan
@@ -410,7 +410,7 @@ def parallelNelderMead(
             temp_simplex = list(simplex[1:N, :])
             fvals = np.array(
                 [fvals[0]]
-                + parallel(delayed(objFunc)(params) for params in temp_simplex)
+                + parallel(delayed(obj_func)(params) for params in temp_simplex)
             )
             new_evals += N - 1
             evals += N - 1
@@ -470,7 +470,7 @@ def parallelNelderMead(
         # Save the progress of the estimation if desired
         if savefreq is not None:
             if (iters % savefreq) == 0:
-                saveNelderMeadData(name, simplex, fvals, iters, evals)
+                save_nelder_mead_data(name, simplex, fvals, iters, evals)
                 if verbose > 0:
                     print("Saved search progress in " + name + ".txt")
 
@@ -479,7 +479,7 @@ def parallelNelderMead(
     return xopt, fmin
 
 
-def saveNelderMeadData(name, simplex, fvals, iters, evals):
+def save_nelder_mead_data(name, simplex, fvals, iters, evals):
     """
     Stores the progress of a parallel Nelder-Mead search in a text file so that
     it can be resumed later (after manual termination or a crash).
@@ -513,10 +513,10 @@ def saveNelderMeadData(name, simplex, fvals, iters, evals):
         my_writer.writerow(fvals)
 
 
-def loadNelderMeadData(name):
+def load_nelder_mead_data(name):
     """
     Reads the progress of a parallel Nelder-Mead search from a text file, as
-    created by saveNelderMeadData().
+    created by save_nelder_mead_data().
     
     Parameters
     ----------
@@ -559,7 +559,7 @@ def loadNelderMeadData(name):
     return simplex, fvals, iters, evals
 
 
-def parallelNelderMeadWorker(objFunc, simplex, f_vals, j, P, opt_params):
+def parallel_nelder_mead_worker(obj_func, simplex, f_vals, j, P, opt_params):
     """
     A worker process for the parallel Nelder-Mead algorithm.  Updates one point
     in the simplex, returning its function value as well.  Should basically
@@ -567,13 +567,13 @@ def parallelNelderMeadWorker(objFunc, simplex, f_vals, j, P, opt_params):
     
     Parameters
     ----------
-    objFunc : function
+    obj_func : function
         The function to be minimized; takes a single 1D array as input.
     simplex : numpy.array
-        The current simplex for minimization; simplex[k,:] is an input for objFunc.
+        The current simplex for minimization; simplex[k,:] is an input for obj_func.
     f_vals : numpy.array
         The values of the objective function at each point of the simplex:
-        f_vals[k] = objFunc(simplex[k,:])
+        f_vals[k] = obj_func(simplex[k,:])
     j : int
         Index of the point in the simplex to update: simplex[j,:]
     P : int
@@ -586,9 +586,9 @@ def parallelNelderMeadWorker(objFunc, simplex, f_vals, j, P, opt_params):
     new_point : numpy.array
         An updated point for the simplex; might be the same as simplex[j,:].
     new_val : float
-        The value of the objective function at the new point: objFunc(new_point).
+        The value of the objective function at the new point: obj_func(new_point).
     evals : int
-        Number of evaluations of objFunc by this worker.
+        Number of evaluations of obj_func by this worker.
     """
     # Unpack the input parameters
     alpha = opt_params[0]  # reflection parameter
@@ -606,13 +606,13 @@ def parallelNelderMeadWorker(objFunc, simplex, f_vals, j, P, opt_params):
 
     # Calculate the reflection point and its function value
     r_point = centroid + alpha * (centroid - my_point)
-    r_val = objFunc(r_point)
+    r_val = obj_func(r_point)
     evals += 1
 
     # Case 1: the reflection point is better than best point
     if r_val < best_val:
         e_point = r_point + gamma * (r_point - centroid)
-        e_val = objFunc(e_point)  # Calculate expansion point
+        e_val = obj_func(e_point)  # Calculate expansion point
         evals += 1
         if e_val < r_val:
             new_point = e_point
@@ -633,7 +633,7 @@ def parallelNelderMeadWorker(objFunc, simplex, f_vals, j, P, opt_params):
             temp_point = my_point
             temp_val = my_val
         c_point = temp_point + beta * (centroid - temp_point)
-        c_val = objFunc(c_point)  # Calculate contraction point
+        c_val = obj_func(c_point)  # Calculate contraction point
         evals += 1
         if c_val < temp_val:
             new_point = c_point
diff --git a/HARK/interpolation.py b/HARK/interpolation.py
index b39e34b3e..22714b4b5 100644
--- a/HARK/interpolation.py
+++ b/HARK/interpolation.py
@@ -3883,9 +3883,9 @@ def __init__(self, f_values, x_values, y_values):
         my_shape = f_values.shape
         self.x_n = my_shape[0]
         self.y_n = my_shape[1]
-        self.updatePolarity()
+        self.update_polarity()
 
-    def updatePolarity(self):
+    def update_polarity(self):
         """
         Fills in the polarity attribute of the interpolation, determining whether
         the "plus" (True) or "minus" (False) solution of the system of equations
@@ -3919,7 +3919,7 @@ def updatePolarity(self):
 
         # Set the polarity of all sectors to "plus", then test each sector
         self.polarity = np.ones((self.x_n - 1, self.y_n - 1), dtype=bool)
-        alpha, beta = self.findCoords(x_temp, y_temp, x_pos, y_pos)
+        alpha, beta = self.find_coords(x_temp, y_temp, x_pos, y_pos)
         polarity = np.logical_and(
             np.logical_and(alpha > 0, alpha < 1), np.logical_and(beta > 0, beta < 1)
         )
@@ -3928,7 +3928,7 @@ def updatePolarity(self):
         # sector must use the "minus" solution instead
         self.polarity = np.reshape(polarity, (self.x_n - 1, self.y_n - 1))
 
-    def findSector(self, x, y):
+    def find_sector(self, x, y):
         """
         Finds the quadrilateral "sector" for each (x,y) point in the input.
         Only called as a subroutine of _evaluate().
@@ -3956,7 +3956,7 @@ def findSector(self, x, y):
         # boundary defined by (x_bound_1,y_bound_1) and (x_bound_2,y_bound_2),
         # where the latter is *COUNTER CLOCKWISE* from the former.  Returns
         # 1 if the point is outside the boundary and 0 otherwise.
-        violationCheck = (
+        violation_check = (
             lambda x_check, y_check, x_bound_1, y_bound_1, x_bound_2, y_bound_2: (
                 (y_bound_2 - y_bound_1) * x_check - (x_bound_2 - x_bound_1) * y_check
                 > x_bound_1 * y_bound_2 - y_bound_1 * x_bound_2
@@ -3989,16 +3989,16 @@ def findSector(self, x, y):
 
             # Check which boundaries are violated (and thus where to look next)
             c = (move_down + move_right + move_up + move_left) == 0
-            move_down[c] = violationCheck(
+            move_down[c] = violation_check(
                 x_temp[c], y_temp[c], xA[c], yA[c], xB[c], yB[c]
             )
-            move_right[c] = violationCheck(
+            move_right[c] = violation_check(
                 x_temp[c], y_temp[c], xB[c], yB[c], xD[c], yD[c]
             )
-            move_up[c] = violationCheck(
+            move_up[c] = violation_check(
                 x_temp[c], y_temp[c], xD[c], yD[c], xC[c], yC[c]
             )
-            move_left[c] = violationCheck(
+            move_left[c] = violation_check(
                 x_temp[c], y_temp[c], xC[c], yC[c], xA[c], yA[c]
             )
 
@@ -4029,7 +4029,7 @@ def findSector(self, x, y):
         y_pos = y_pos_guess
         return x_pos, y_pos
 
-    def findCoords(self, x, y, x_pos, y_pos):
+    def find_coords(self, x, y, x_pos, y_pos):
         """
         Calculates the relative coordinates (alpha,beta) for each point (x,y),
         given the sectors (x_pos,y_pos) in which they reside.  Only called as
@@ -4111,8 +4111,8 @@ def _evaluate(self, x, y):
         Returns the level of the interpolated function at each value in x,y.
         Only called internally by HARKinterpolator2D.__call__ (etc).
         """
-        x_pos, y_pos = self.findSector(x, y)
-        alpha, beta = self.findCoords(x, y, x_pos, y_pos)
+        x_pos, y_pos = self.find_sector(x, y)
+        alpha, beta = self.find_coords(x, y, x_pos, y_pos)
 
         # Calculate the function at each point using bilinear interpolation
         f = (
@@ -4128,8 +4128,8 @@ def _derX(self, x, y):
         Returns the derivative with respect to x of the interpolated function
         at each value in x,y. Only called internally by HARKinterpolator2D.derivativeX.
         """
-        x_pos, y_pos = self.findSector(x, y)
-        alpha, beta = self.findCoords(x, y, x_pos, y_pos)
+        x_pos, y_pos = self.find_sector(x, y)
+        alpha, beta = self.find_coords(x, y, x_pos, y_pos)
 
         # Get four corners data for each point
         xA = self.x_values[x_pos, y_pos]
@@ -4169,8 +4169,8 @@ def _derY(self, x, y):
         Returns the derivative with respect to y of the interpolated function
         at each value in x,y. Only called internally by HARKinterpolator2D.derivativeX.
         """
-        x_pos, y_pos = self.findSector(x, y)
-        alpha, beta = self.findCoords(x, y, x_pos, y_pos)
+        x_pos, y_pos = self.find_sector(x, y)
+        alpha, beta = self.find_coords(x, y, x_pos, y_pos)
 
         # Get four corners data for each point
         xA = self.x_values[x_pos, y_pos]
@@ -4211,7 +4211,7 @@ def _derY(self, x, y):
 ###############################################################################
 
 
-def calcLogSumChoiceProbs(Vals, sigma):
+def calc_log_sum_choice_probs(Vals, sigma):
     """
     Returns the final optimal value and choice probabilities given the choice
     specific value functions `Vals`. Probabilities are degenerate if sigma == 0.0.
@@ -4253,7 +4253,7 @@ def calcLogSumChoiceProbs(Vals, sigma):
     return LogSumV, Probs
 
 
-def calcChoiceProbs(Vals, sigma):
+def calc_choice_probs(Vals, sigma):
     """
     Returns the choice probabilities given the choice specific value functions
     `Vals`. Probabilities are degenerate if sigma == 0.0.
@@ -4285,7 +4285,7 @@ def calcChoiceProbs(Vals, sigma):
     return Probs
 
 
-def calcLogSum(Vals, sigma):
+def calc_log_sum(Vals, sigma):
     """
     Returns the optimal value given the choice specific value functions Vals.
     Parameters
diff --git a/HARK/numba.py b/HARK/numba.py
index 41c8e784e..781972309 100644
--- a/HARK/numba.py
+++ b/HARK/numba.py
@@ -66,7 +66,7 @@ def _interp_linear(x0, x_list, y_list, lower_extrap):
 
 
 @njit(cache=True, error_model="numpy")
-def LinearInterpFast(
+def linear_interp_fast(
     x0, x_list, y_list, intercept_limit=None, slope_limit=None, lower_extrap=False
 ):
     if intercept_limit is None and slope_limit is None:
@@ -131,7 +131,7 @@ def _interp_decay_deriv(x0, x_list, y_list, intercept_limit, slope_limit, lower_
 
 
 @njit(cache=True, error_model="numpy")
-def LinearInterpDerivFast(
+def linear_interp_deriv_fast(
     x0, x_list, y_list, intercept_limit=None, slope_limit=None, lower_extrap=False
 ):
     if intercept_limit is None and slope_limit is None:
@@ -228,7 +228,7 @@ def _spline_decay(
 
 
 @njit(cache=True, error_model="numpy")
-def CubicInterpFast(
+def cubic_interp_fast(
     x0,
     x_list,
     y_list,
diff --git a/HARK/parallel.py b/HARK/parallel.py
index 6f4d914df..abfb15283 100644
--- a/HARK/parallel.py
+++ b/HARK/parallel.py
@@ -3,14 +3,14 @@
 import multiprocessing
 
 
-def multiThreadCommandsFake(
+def multi_thread_commands_fake(
     agent_list: List, command_list: List, num_jobs=None
 ) -> None:
     """
     Executes the list of commands in command_list for each AgentType in agent_list
     in an ordinary, single-threaded loop.  Each command should be a method of
     that AgentType subclass.  This function exists so as to easily disable
-    multithreading, as it uses the same syntax as multithreadCommands.
+    multithreading, as it uses the same syntax as multi_thread_commands.
 
     Parameters
     ----------
@@ -19,7 +19,7 @@ def multiThreadCommandsFake(
     command_list : [string]
         A list of commands to run for each AgentType.
     num_jobs : None
-        Dummy input to match syntax of multiThreadCommands.  Does nothing.
+        Dummy input to match syntax of multi_thread_commands.  Does nothing.
 
     Returns
     -------
@@ -31,7 +31,7 @@ def multiThreadCommandsFake(
             getattr(agent, command[:-2])()
 
 
-def multiThreadCommands(agent_list: List, command_list: List, num_jobs=None) -> None:
+def multi_thread_commands(agent_list: List, command_list: List, num_jobs=None) -> None:
     """
     Executes the list of commands in command_list for each AgentType in agent_list
     using a multithreaded system. Each command should be a method of that AgentType subclass.
@@ -48,7 +48,7 @@ def multiThreadCommands(agent_list: List, command_list: List, num_jobs=None) ->
     None
     """
     if len(agent_list) == 1:
-        multiThreadCommandsFake(agent_list, command_list)
+        multi_thread_commands_fake(agent_list, command_list)
         return None
 
     # Default number of parallel jobs is the smaller of number of AgentTypes in
@@ -58,7 +58,7 @@ def multiThreadCommands(agent_list: List, command_list: List, num_jobs=None) ->
 
     # Send each command in command_list to each of the types in agent_list to be run
     agent_list_out = Parallel(n_jobs=num_jobs)(
-        delayed(runCommands)(*args)
+        delayed(run_commands)(*args)
         for args in zip(agent_list, len(agent_list) * [command_list])
     )
 
@@ -67,7 +67,7 @@ def multiThreadCommands(agent_list: List, command_list: List, num_jobs=None) ->
         agent_list[j] = agent_list_out[j]
 
 
-def runCommands(agent: Any, command_list: List) -> Any:
+def run_commands(agent: Any, command_list: List) -> Any:
     """
     Executes each command in command_list on a given AgentType.  The commands
     should be methods of that AgentType's subclass.
diff --git a/HARK/utilities.py b/HARK/utilities.py
index f69e8ab98..a6144cf4e 100644
--- a/HARK/utilities.py
+++ b/HARK/utilities.py
@@ -46,7 +46,7 @@ def memoizer(*args, **kwargs):
 # ==============================================================================
 # ============== Some basic function tools  ====================================
 # ==============================================================================
-def getArgNames(function):
+def get_arg_names(function):
     """
     Returns a list of strings naming all of the arguments for the passed function.
 
@@ -453,7 +453,7 @@ def CARAutility_invP(u, alpha):
 # ==============================================================================
 # ============== Functions for generating state space grids  ===================
 # ==============================================================================
-def makeGridExpMult(ming, maxg, ng, timestonest=20):
+def make_grid_exp_mult(ming, maxg, ng, timestonest=20):
     """
     Make a multi-exponentially spaced grid.
 
@@ -500,7 +500,7 @@ def makeGridExpMult(ming, maxg, ng, timestonest=20):
 # ==============================================================================
 # ============== Uncategorized general functions  ===================
 # ==============================================================================
-def calcWeightedAvg(data, weights):
+def calc_weighted_avg(data, weights):
     """
     Generates a weighted average of simulated data.  The Nth row of data is averaged
     and then weighted by the Nth element of weights in an aggregate average.
@@ -522,7 +522,7 @@ def calcWeightedAvg(data, weights):
     return weighted_sum
 
 
-def getPercentiles(data, weights=None, percentiles=None, presorted=False):
+def get_percentiles(data, weights=None, percentiles=None, presorted=False):
     """
     Calculates the requested percentiles of (weighted) data.  Median by default.
 
@@ -580,7 +580,7 @@ def getPercentiles(data, weights=None, percentiles=None, presorted=False):
     return pctl_out
 
 
-def getLorenzShares(data, weights=None, percentiles=None, presorted=False):
+def get_lorenz_shares(data, weights=None, percentiles=None, presorted=False):
     """
     Calculates the Lorenz curve at the requested percentiles of (weighted) data.
     Median by default.
@@ -637,7 +637,7 @@ def getLorenzShares(data, weights=None, percentiles=None, presorted=False):
     return lorenz_out
 
 
-def calcSubpopAvg(data, reference, cutoffs, weights=None):
+def calc_subpop_avg(data, reference, cutoffs, weights=None):
     """
     Calculates the average of (weighted) data between cutoff percentiles of a
     reference variable.
@@ -683,7 +683,7 @@ def calcSubpopAvg(data, reference, cutoffs, weights=None):
     return slice_avg
 
 
-def kernelRegression(x, y, bot=None, top=None, N=500, h=None):
+def kernel_regression(x, y, bot=None, top=None, N=500, h=None):
     """
     Performs a non-parametric Nadaraya-Watson 1D kernel regression on given data
     with optionally specified range, number of points, and kernel bandwidth.
@@ -721,13 +721,13 @@ def kernelRegression(x, y, bot=None, top=None, N=500, h=None):
     y_vec = np.zeros_like(x_vec) + np.nan
     for j in range(N):
         x_here = x_vec[j]
-        weights = epanechnikovKernel(x, x_here, h)
+        weights = epanechnikov_kernel(x, x_here, h)
         y_vec[j] = np.dot(weights, y) / np.sum(weights)
     regression = interp1d(x_vec, y_vec, bounds_error=False, assume_sorted=True)
     return regression
 
 
-def epanechnikovKernel(x, ref_x, h=1.0):
+def epanechnikov_kernel(x, ref_x, h=1.0):
     """
     The Epanechnikov kernel.
 
@@ -757,7 +757,7 @@ def epanechnikovKernel(x, ref_x, h=1.0):
 # ==============================================================================
 
 
-def plotFuncs(functions, bottom, top, N=1000, legend_kwds=None):
+def plot_funcs(functions, bottom, top, N=1000, legend_kwds=None):
     """
     Plots 1D function(s) over a given range.
 
@@ -795,7 +795,7 @@ def plotFuncs(functions, bottom, top, N=1000, legend_kwds=None):
     plt.show()
 
 
-def plotFuncsDer(functions, bottom, top, N=1000, legend_kwds=None):
+def plot_funcs_der(functions, bottom, top, N=1000, legend_kwds=None):
     """
     Plots the first derivative of 1D function(s) over a given range.
 
diff --git a/examples/Calibration/Life_Cycle_example.py b/examples/Calibration/Life_Cycle_example.py
index adab6fcf2..e297cc984 100644
--- a/examples/Calibration/Life_Cycle_example.py
+++ b/examples/Calibration/Life_Cycle_example.py
@@ -82,7 +82,7 @@
 Agent.track_vars = ["aNrm", "cNrm", "pLvl", "t_age", "mNrm"]
 
 # Run the simulations
-Agent.initializeSim()
+Agent.initialize_sim()
 Agent.simulate()
 
 # %% Extract and format simulation results
diff --git a/examples/ConsIndShockModel/IndShockConsumerType.ipynb b/examples/ConsIndShockModel/IndShockConsumerType.ipynb
index 9b1854185..618b74844 100644
--- a/examples/ConsIndShockModel/IndShockConsumerType.ipynb
+++ b/examples/ConsIndShockModel/IndShockConsumerType.ipynb
@@ -462,7 +462,7 @@
      "traceback": [
       "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
       "\u001b[0;31mAttributeError\u001b[0m                            Traceback (most recent call last)",
-      "\u001b[0;32m<ipython-input-8-393186fcff30>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0mIndShockExample\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtrack_vars\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m'aNrmNow'\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m'mNrm'\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m'cNrm'\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m'pLvl'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      2\u001b[0m \u001b[0mIndShockExample\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0minitializeSim\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0mIndShockExample\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msimulate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
+      "\u001b[0;32m<ipython-input-8-393186fcff30>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0mIndShockExample\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtrack_vars\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m'aNrmNow'\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m'mNrm'\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m'cNrm'\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m'pLvl'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      2\u001b[0m \u001b[0mIndShockExample\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0minitialize_sim\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0mIndShockExample\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msimulate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
       "\u001b[0;32m~/projects/econ-ark/HARK/HARK/core.py\u001b[0m in \u001b[0;36msimulate\u001b[0;34m(self, sim_periods)\u001b[0m\n\u001b[1;32m    833\u001b[0m                         \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mhistory\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mvar_name\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mt_sim\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m:\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcontrols\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mvar_name\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    834\u001b[0m                     \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 835\u001b[0;31m                         \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mhistory\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mvar_name\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mt_sim\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m:\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mvar_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    836\u001b[0m                 \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mt_sim\u001b[0m \u001b[0;34m+=\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    837\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
       "\u001b[0;31mAttributeError\u001b[0m: 'IndShockConsumerType' object has no attribute 'aNrmNow'"
      ]
@@ -470,7 +470,7 @@
    ],
    "source": [
     "IndShockExample.track_vars = ['aNrmNow','mNrm','cNrm','pLvl']\n",
-    "IndShockExample.initializeSim()\n",
+    "IndShockExample.initialize_sim()\n",
     "IndShockExample.simulate()"
    ]
   },
diff --git a/examples/ConsIndShockModel/IndShockConsumerType.py b/examples/ConsIndShockModel/IndShockConsumerType.py
index 549f56525..d2f11df0d 100644
--- a/examples/ConsIndShockModel/IndShockConsumerType.py
+++ b/examples/ConsIndShockModel/IndShockConsumerType.py
@@ -244,7 +244,7 @@
 
 # %%
 IndShockExample.track_vars = ['aNrmNow','mNrm','cNrm','pLvl']
-IndShockExample.initializeSim()
+IndShockExample.initialize_sim()
 IndShockExample.simulate()
 
 # %% [markdown]
diff --git a/examples/ConsIndShockModel/KinkedRconsumerType.ipynb b/examples/ConsIndShockModel/KinkedRconsumerType.ipynb
index 02962dd37..8faa2a81e 100644
--- a/examples/ConsIndShockModel/KinkedRconsumerType.ipynb
+++ b/examples/ConsIndShockModel/KinkedRconsumerType.ipynb
@@ -342,7 +342,7 @@
    ],
    "source": [
     "KinkyExample.track_vars = ['mNrm', 'cNrm', 'pLvl']\n",
-    "KinkyExample.initializeSim()\n",
+    "KinkyExample.initialize_sim()\n",
     "KinkyExample.simulate()"
    ]
   },
diff --git a/examples/ConsIndShockModel/KinkedRconsumerType.py b/examples/ConsIndShockModel/KinkedRconsumerType.py
index b8ea5a554..3418a7d1a 100644
--- a/examples/ConsIndShockModel/KinkedRconsumerType.py
+++ b/examples/ConsIndShockModel/KinkedRconsumerType.py
@@ -198,7 +198,7 @@
 
 # %%
 KinkyExample.track_vars = ['mNrm', 'cNrm', 'pLvl']
-KinkyExample.initializeSim()
+KinkyExample.initialize_sim()
 KinkyExample.simulate()
 
 # %% [markdown]
diff --git a/examples/ConsIndShockModel/PerfForesightConsumerType.ipynb b/examples/ConsIndShockModel/PerfForesightConsumerType.ipynb
index cb6bec380..43d698c46 100644
--- a/examples/ConsIndShockModel/PerfForesightConsumerType.ipynb
+++ b/examples/ConsIndShockModel/PerfForesightConsumerType.ipynb
@@ -407,7 +407,7 @@
     "    \"T_age\": None,  # Age after which simulated agents are automatically killed\n",
     "}\n",
     "\n",
-    "# This implicitly uses the assignParameters method of AgentType\n",
+    "# This implicitly uses the assign_parameters method of AgentType\n",
     "PFexample(**SimulationParams)"
    ]
   },
@@ -424,7 +424,7 @@
     "\n",
     "### Generating simulated data\n",
     "\n",
-    "Before simulating, the $\\texttt{initializeSim}$ method must be invoked.  This resets our instance back to its initial state, drawing a set of initial $\\texttt{aNrmNow}$ and $\\texttt{pLvlNow}$ values from the specified distributions and storing them in the attributes $\\texttt{aNrmNow_init}$ and $\\texttt{pLvlNow_init}$.  It also resets this instance's internal random number generator, so that the same initial states will be set every time $\\texttt{initializeSim}$ is called.  In models with non-trivial shocks, this also ensures that the same sequence of shocks will be generated on every simulation run.\n",
+    "Before simulating, the $\\texttt{initialize_sim}$ method must be invoked.  This resets our instance back to its initial state, drawing a set of initial $\\texttt{aNrmNow}$ and $\\texttt{pLvlNow}$ values from the specified distributions and storing them in the attributes $\\texttt{aNrmNow_init}$ and $\\texttt{pLvlNow_init}$.  It also resets this instance's internal random number generator, so that the same initial states will be set every time $\\texttt{initialize_sim}$ is called.  In models with non-trivial shocks, this also ensures that the same sequence of shocks will be generated on every simulation run.\n",
     "\n",
     "Finally, the $\\texttt{simulate}$ method can be called."
    ]
@@ -462,7 +462,7 @@
    ],
    "source": [
     "PFexample.track_vars = ['mNrm']\n",
-    "PFexample.initializeSim()\n",
+    "PFexample.initialize_sim()\n",
     "PFexample.simulate()"
    ]
   },
@@ -555,7 +555,7 @@
    "source": [
     "The distribution is (discretely) exponential, with a point mass at 120 with consumers who have survived since the beginning of the simulation.\n",
     "\n",
-    "One might wonder why HARK requires users to call $\\texttt{initializeSim}$ before calling $\\texttt{simulate}$: Why doesn't $\\texttt{simulate}$ just call $\\texttt{initializeSim}$ as its first step?  We have broken up these two steps so that users can simulate some number of periods, change something in the environment, and then resume the simulation.\n",
+    "One might wonder why HARK requires users to call $\\texttt{initialize_sim}$ before calling $\\texttt{simulate}$: Why doesn't $\\texttt{simulate}$ just call $\\texttt{initialize_sim}$ as its first step?  We have broken up these two steps so that users can simulate some number of periods, change something in the environment, and then resume the simulation.\n",
     "\n",
     "When called with no argument, $\\texttt{simulate}$ will simulate the model for $\\texttt{T_sim}$ periods.  The user can optionally pass an integer specifying the number of periods to simulate (which should not exceed $\\texttt{T_sim}$).\n",
     "\n",
@@ -586,7 +586,7 @@
     }
    ],
    "source": [
-    "PFexample.initializeSim()\n",
+    "PFexample.initialize_sim()\n",
     "PFexample.simulate(80)\n",
     "PFexample.state_prev['aNrm'] += -5.0  # Adjust all simulated consumers' assets downward by 5\n",
     "PFexample.simulate(40)\n",
diff --git a/examples/ConsIndShockModel/PerfForesightConsumerType.py b/examples/ConsIndShockModel/PerfForesightConsumerType.py
index 58ab53ad7..7220be64b 100644
--- a/examples/ConsIndShockModel/PerfForesightConsumerType.py
+++ b/examples/ConsIndShockModel/PerfForesightConsumerType.py
@@ -230,7 +230,7 @@
     "T_age": None,  # Age after which simulated agents are automatically killed
 }
 
-# This implicitly uses the assignParameters method of AgentType
+# This implicitly uses the assign_parameters method of AgentType
 PFexample(**SimulationParams)
 
 # %% pycharm= [markdown] {"name": "#%% md\n"}
@@ -240,13 +240,13 @@
 #
 # ### Generating simulated data
 #
-# Before simulating, the $\texttt{initializeSim}$ method must be invoked.  This resets our instance back to its initial state, drawing a set of initial $\texttt{aNrmNow}$ and $\texttt{pLvlNow}$ values from the specified distributions and storing them in the attributes $\texttt{aNrmNow_init}$ and $\texttt{pLvlNow_init}$.  It also resets this instance's internal random number generator, so that the same initial states will be set every time $\texttt{initializeSim}$ is called.  In models with non-trivial shocks, this also ensures that the same sequence of shocks will be generated on every simulation run.
+# Before simulating, the $\texttt{initialize_sim}$ method must be invoked.  This resets our instance back to its initial state, drawing a set of initial $\texttt{aNrmNow}$ and $\texttt{pLvlNow}$ values from the specified distributions and storing them in the attributes $\texttt{aNrmNow_init}$ and $\texttt{pLvlNow_init}$.  It also resets this instance's internal random number generator, so that the same initial states will be set every time $\texttt{initialize_sim}$ is called.  In models with non-trivial shocks, this also ensures that the same sequence of shocks will be generated on every simulation run.
 #
 # Finally, the $\texttt{simulate}$ method can be called.
 
 # %% pycharm= {"name": "#%%\n"}
 PFexample.track_vars = ['mNrm']
-PFexample.initializeSim()
+PFexample.initialize_sim()
 PFexample.simulate()
 
 # %% pycharm= [markdown] {"name": "#%% md\n"}
@@ -274,7 +274,7 @@
 # %% pycharm= [markdown] {"name": "#%% md\n"}
 # The distribution is (discretely) exponential, with a point mass at 120 with consumers who have survived since the beginning of the simulation.
 #
-# One might wonder why HARK requires users to call $\texttt{initializeSim}$ before calling $\texttt{simulate}$: Why doesn't $\texttt{simulate}$ just call $\texttt{initializeSim}$ as its first step?  We have broken up these two steps so that users can simulate some number of periods, change something in the environment, and then resume the simulation.
+# One might wonder why HARK requires users to call $\texttt{initialize_sim}$ before calling $\texttt{simulate}$: Why doesn't $\texttt{simulate}$ just call $\texttt{initialize_sim}$ as its first step?  We have broken up these two steps so that users can simulate some number of periods, change something in the environment, and then resume the simulation.
 #
 # When called with no argument, $\texttt{simulate}$ will simulate the model for $\texttt{T_sim}$ periods.  The user can optionally pass an integer specifying the number of periods to simulate (which should not exceed $\texttt{T_sim}$).
 #
@@ -283,7 +283,7 @@
 # The `state_prev` attribute of an AgenType stores the values of the model's state variables in the _previous_ period of the simulation.
 
 # %% pycharm= {"name": "#%%\n"}
-PFexample.initializeSim()
+PFexample.initialize_sim()
 PFexample.simulate(80)
 PFexample.state_prev['aNrm'] += -5.0  # Adjust all simulated consumers' assets downward by 5
 PFexample.simulate(40)
diff --git a/examples/ConsumptionSaving/example_ConsGenIncProcessModel.ipynb b/examples/ConsumptionSaving/example_ConsGenIncProcessModel.ipynb
index 8f9788a69..a94c4f430 100644
--- a/examples/ConsumptionSaving/example_ConsGenIncProcessModel.ipynb
+++ b/examples/ConsumptionSaving/example_ConsGenIncProcessModel.ipynb
@@ -280,8 +280,8 @@
     "if do_simulation:\n",
     "    ExplicitExample.T_sim = 500\n",
     "    ExplicitExample.track_vars = [\"mLvl\", \"cLvl\", \"pLvl\"]\n",
-    "    ExplicitExample.makeShockHistory()  # This is optional\n",
-    "    ExplicitExample.initializeSim()\n",
+    "    ExplicitExample.make_shock_history()  # This is optional\n",
+    "    ExplicitExample.initialize_sim()\n",
     "    ExplicitExample.simulate()\n",
     "    plt.plot(np.mean(ExplicitExample.history['mLvl'], axis=1))\n",
     "    plt.xlabel(\"Simulated time period\")\n",
@@ -329,7 +329,7 @@
     },
     {
      "data": {
-      "image/png": "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\n",
+      "image/png": "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_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\n",
       "text/plain": [
        "<Figure size 432x288 with 1 Axes>"
       ]
@@ -403,7 +403,7 @@
     "if do_simulation:\n",
     "    PersistentExample.T_sim = 500\n",
     "    PersistentExample.track_vars = [\"mLvl\", \"cLvl\", \"pLvl\"]\n",
-    "    PersistentExample.initializeSim()\n",
+    "    PersistentExample.initialize_sim()\n",
     "    PersistentExample.simulate()\n",
     "    plt.plot(np.mean(PersistentExample.history['mLvl'], axis=1))\n",
     "    plt.xlabel(\"Simulated time period\")\n",
diff --git a/examples/ConsumptionSaving/example_ConsGenIncProcessModel.py b/examples/ConsumptionSaving/example_ConsGenIncProcessModel.py
index 5c187cfa3..ff18bcbc0 100644
--- a/examples/ConsumptionSaving/example_ConsGenIncProcessModel.py
+++ b/examples/ConsumptionSaving/example_ConsGenIncProcessModel.py
@@ -122,8 +122,8 @@ def mystr(number):
 if do_simulation:
     ExplicitExample.T_sim = 500
     ExplicitExample.track_vars = ["mLvlNow", "cLvlNow", 'pLvl']
-    ExplicitExample.makeShockHistory()  # This is optional
-    ExplicitExample.initializeSim()
+    ExplicitExample.make_shock_history()  # This is optional
+    ExplicitExample.initialize_sim()
     ExplicitExample.simulate()
     plt.plot(np.mean(ExplicitExample.mLvlNow_hist, axis=1))
     plt.xlabel("Simulated time period")
@@ -180,7 +180,7 @@ def mystr(number):
 if do_simulation:
     PersistentExample.T_sim = 500
     PersistentExample.track_vars = ["mLvlNow", "cLvlNow", 'pLvl']
-    PersistentExample.initializeSim()
+    PersistentExample.initialize_sim()
     PersistentExample.simulate()
     plt.plot(np.mean(PersistentExample.mLvlNow_hist, axis=1))
     plt.xlabel("Simulated time period")
diff --git a/examples/ConsumptionSaving/example_ConsIndShock.ipynb b/examples/ConsumptionSaving/example_ConsIndShock.ipynb
index 49e8e3739..8d6f4428e 100644
--- a/examples/ConsumptionSaving/example_ConsIndShock.ipynb
+++ b/examples/ConsumptionSaving/example_ConsIndShock.ipynb
@@ -115,7 +115,7 @@
     "if do_simulation:\n",
     "    PFexample.T_sim = 120  # Set number of simulation periods\n",
     "    PFexample.track_vars = ['mNrm']\n",
-    "    PFexample.initializeSim()\n",
+    "    PFexample.initialize_sim()\n",
     "    PFexample.simulate()"
    ]
   },
@@ -285,8 +285,8 @@
     "if do_simulation:\n",
     "    IndShockExample.T_sim = 120\n",
     "    IndShockExample.track_vars = ['mNrm', 'cNrm', 'pLvl']\n",
-    "    IndShockExample.makeShockHistory()  # This is optional, simulation will draw shocks on the fly if it isn't run.\n",
-    "    IndShockExample.initializeSim()\n",
+    "    IndShockExample.make_shock_history()  # This is optional, simulation will draw shocks on the fly if it isn't run.\n",
+    "    IndShockExample.initialize_sim()\n",
     "    IndShockExample.simulate()"
    ]
   },
@@ -408,7 +408,7 @@
     "if do_simulation:\n",
     "    LifecycleExample.T_sim = 120\n",
     "    LifecycleExample.track_vars = ['mNrm', 'cNrm', 'pLvl', \"t_age\"]\n",
-    "    LifecycleExample.initializeSim()\n",
+    "    LifecycleExample.initialize_sim()\n",
     "    LifecycleExample.simulate()"
    ]
   },
@@ -487,7 +487,7 @@
     "if do_simulation:\n",
     "    CyclicalExample.T_sim = 480\n",
     "    CyclicalExample.track_vars = ['mNrm', 'cNrm', 'pLvl', \"t_cycle\"]\n",
-    "    CyclicalExample.initializeSim()\n",
+    "    CyclicalExample.initialize_sim()\n",
     "    CyclicalExample.simulate()"
    ]
   },
@@ -526,7 +526,7 @@
     "if do_simulation:\n",
     "    KinkyExample.T_sim = 120\n",
     "    KinkyExample.track_vars = ['mNrm', 'cNrm', 'pLvl']\n",
-    "    KinkyExample.initializeSim()\n",
+    "    KinkyExample.initialize_sim()\n",
     "    KinkyExample.simulate()"
    ]
   }
diff --git a/examples/ConsumptionSaving/example_ConsIndShock.py b/examples/ConsumptionSaving/example_ConsIndShock.py
index f9952c796..0f2a18f46 100644
--- a/examples/ConsumptionSaving/example_ConsIndShock.py
+++ b/examples/ConsumptionSaving/example_ConsIndShock.py
@@ -36,7 +36,7 @@
 if do_simulation:
     PFexample.T_sim = 120  # Set number of simulation periods
     PFexample.track_vars = ['mNrm']
-    PFexample.initializeSim()
+    PFexample.initialize_sim()
     PFexample.simulate()
 
 # Make and solve an example consumer with idiosyncratic income shocks
@@ -81,8 +81,8 @@
 if do_simulation:
     IndShockExample.T_sim = 120
     IndShockExample.track_vars = ['mNrm', 'cNrm', 'pLvl']
-    IndShockExample.makeShockHistory()  # This is optional, simulation will draw shocks on the fly if it isn't run.
-    IndShockExample.initializeSim()
+    IndShockExample.make_shock_history()  # This is optional, simulation will draw shocks on the fly if it isn't run.
+    IndShockExample.initialize_sim()
     IndShockExample.simulate()
 
 # Make and solve an idiosyncratic shocks consumer with a finite lifecycle
@@ -112,7 +112,7 @@
 if do_simulation:
     LifecycleExample.T_sim = 120
     LifecycleExample.track_vars = ['mNrm', 'cNrm', 'pLvl', "t_age"]
-    LifecycleExample.initializeSim()
+    LifecycleExample.initialize_sim()
     LifecycleExample.simulate()
 
 # Make and solve a "cyclical" consumer type who lives the same four quarters repeatedly.
@@ -135,7 +135,7 @@
 if do_simulation:
     CyclicalExample.T_sim = 480
     CyclicalExample.track_vars = ['mNrm', 'cNrm', 'pLvl', "t_cycle"]
-    CyclicalExample.initializeSim()
+    CyclicalExample.initialize_sim()
     CyclicalExample.simulate()
 
 # Make and solve an agent with a kinky interest rate
@@ -153,5 +153,5 @@
 if do_simulation:
     KinkyExample.T_sim = 120
     KinkyExample.track_vars = ['mNrm', 'cNrm', 'pLvl']
-    KinkyExample.initializeSim()
+    KinkyExample.initialize_sim()
     KinkyExample.simulate()
diff --git a/examples/ConsumptionSaving/example_ConsLaborModel.ipynb b/examples/ConsumptionSaving/example_ConsLaborModel.ipynb
index 2541482a4..aa397a3b1 100644
--- a/examples/ConsumptionSaving/example_ConsLaborModel.ipynb
+++ b/examples/ConsumptionSaving/example_ConsLaborModel.ipynb
@@ -285,7 +285,7 @@
     "    t_start = process_time()\n",
     "    LaborIntMargExample.T_sim = 120  # Set number of simulation periods\n",
     "    LaborIntMargExample.track_vars = [\"bNrm\", 'cNrm']\n",
-    "    LaborIntMargExample.initializeSim()\n",
+    "    LaborIntMargExample.initialize_sim()\n",
     "    LaborIntMargExample.simulate()\n",
     "    t_end = process_time()\n",
     "    print(\n",
diff --git a/examples/ConsumptionSaving/example_ConsLaborModel.py b/examples/ConsumptionSaving/example_ConsLaborModel.py
index 1d8f57383..9bfb53a5d 100644
--- a/examples/ConsumptionSaving/example_ConsLaborModel.py
+++ b/examples/ConsumptionSaving/example_ConsLaborModel.py
@@ -130,7 +130,7 @@
     t_start = process_time()
     LaborIntMargExample.T_sim = 120  # Set number of simulation periods
     LaborIntMargExample.track_vars = ["bNrm", 'cNrm']
-    LaborIntMargExample.initializeSim()
+    LaborIntMargExample.initialize_sim()
     LaborIntMargExample.simulate()
     t_end = process_time()
     print(
diff --git a/examples/ConsumptionSaving/example_ConsMarkovModel.ipynb b/examples/ConsumptionSaving/example_ConsMarkovModel.ipynb
index 81d1fb38e..e5cd8b30e 100644
--- a/examples/ConsumptionSaving/example_ConsMarkovModel.ipynb
+++ b/examples/ConsumptionSaving/example_ConsMarkovModel.ipynb
@@ -255,8 +255,8 @@
     "    SerialUnemploymentExample.T_sim = 120\n",
     "    SerialUnemploymentExample.MrkvPrbsInit = [0.25, 0.25, 0.25, 0.25]\n",
     "    SerialUnemploymentExample.track_vars = [\"mNrm\", \"cNrm\"]\n",
-    "    SerialUnemploymentExample.makeShockHistory()  # This is optional\n",
-    "    SerialUnemploymentExample.initializeSim()\n",
+    "    SerialUnemploymentExample.make_shock_history()  # This is optional\n",
+    "    SerialUnemploymentExample.initialize_sim()\n",
     "    SerialUnemploymentExample.simulate()"
    ]
   },
@@ -337,7 +337,7 @@
     "init_unemployment_immunity = copy(init_idiosyncratic_shocks)\n",
     "init_unemployment_immunity[\"MrkvArray\"] = [MrkvArray]\n",
     "ImmunityExample = MarkovConsumerType(**init_unemployment_immunity)\n",
-    "ImmunityExample.assignParameters(\n",
+    "ImmunityExample.assign_parameters(\n",
     "    Rfree=np.array(np.array(StateCount * [1.03])),  # Interest factor same in all states\n",
     "    PermGroFac=[\n",
     "        np.array(StateCount * [1.01])\n",
@@ -470,7 +470,7 @@
     "init_serial_growth = copy(init_idiosyncratic_shocks)\n",
     "init_serial_growth[\"MrkvArray\"] = [MrkvArray]\n",
     "SerialGroExample = MarkovConsumerType(**init_serial_growth)\n",
-    "SerialGroExample.assignParameters(\n",
+    "SerialGroExample.assign_parameters(\n",
     "    Rfree=np.array(\n",
     "        np.array(StateCount * [1.03])\n",
     "    ),  # Same interest factor in each Markov state\n",
@@ -540,7 +540,7 @@
    "source": [
     "# Make a consumer with serially correlated interest factors\n",
     "SerialRExample = deepcopy(SerialGroExample)  # Same as the last problem...\n",
-    "SerialRExample.assignParameters(\n",
+    "SerialRExample.assign_parameters(\n",
     "    PermGroFac=[\n",
     "        np.array(StateCount * [1.01])\n",
     "    ],  # ...but now the permanent growth factor is constant...\n",
diff --git a/examples/ConsumptionSaving/example_ConsMarkovModel.py b/examples/ConsumptionSaving/example_ConsMarkovModel.py
index 0534e6243..229ffdfb2 100644
--- a/examples/ConsumptionSaving/example_ConsMarkovModel.py
+++ b/examples/ConsumptionSaving/example_ConsMarkovModel.py
@@ -164,8 +164,8 @@
     SerialUnemploymentExample.T_sim = 120
     SerialUnemploymentExample.MrkvPrbsInit = [0.25, 0.25, 0.25, 0.25]
     SerialUnemploymentExample.track_vars = ['mNrm', 'cNrm']
-    SerialUnemploymentExample.makeShockHistory()  # This is optional
-    SerialUnemploymentExample.initializeSim()
+    SerialUnemploymentExample.make_shock_history()  # This is optional
+    SerialUnemploymentExample.initialize_sim()
     SerialUnemploymentExample.simulate()
 
 # %% [markdown]
@@ -218,7 +218,7 @@
 init_unemployment_immunity = copy(init_idiosyncratic_shocks)
 init_unemployment_immunity["MrkvArray"] = [MrkvArray]
 ImmunityExample = MarkovConsumerType(**init_unemployment_immunity)
-ImmunityExample.assignParameters(
+ImmunityExample.assign_parameters(
     Rfree=np.array(np.array(StateCount * [1.03])),  # Interest factor same in all states
     PermGroFac=[
         np.array(StateCount * [1.01])
@@ -276,7 +276,7 @@
 init_serial_growth = copy(init_idiosyncratic_shocks)
 init_serial_growth["MrkvArray"] = [MrkvArray]
 SerialGroExample = MarkovConsumerType(**init_serial_growth)
-SerialGroExample.assignParameters(
+SerialGroExample.assign_parameters(
     Rfree=np.array(
         np.array(StateCount * [1.03])
     ),  # Same interest factor in each Markov state
@@ -310,7 +310,7 @@
 # %%
 # Make a consumer with serially correlated interest factors
 SerialRExample = deepcopy(SerialGroExample)  # Same as the last problem...
-SerialRExample.assignParameters(
+SerialRExample.assign_parameters(
     PermGroFac=[
         np.array(StateCount * [1.01])
     ],  # ...but now the permanent growth factor is constant...
diff --git a/examples/ConsumptionSaving/example_ConsMedModel.ipynb b/examples/ConsumptionSaving/example_ConsMedModel.ipynb
index 3838173c6..729c6c5a3 100644
--- a/examples/ConsumptionSaving/example_ConsMedModel.ipynb
+++ b/examples/ConsumptionSaving/example_ConsMedModel.ipynb
@@ -355,8 +355,8 @@
     "    t_start = time()\n",
     "    MedicalExample.T_sim = 100\n",
     "    MedicalExample.track_vars = [\"mLvl\", \"cLvl\", \"Med\"]\n",
-    "    MedicalExample.makeShockHistory()\n",
-    "    MedicalExample.initializeSim()\n",
+    "    MedicalExample.make_shock_history()\n",
+    "    MedicalExample.initialize_sim()\n",
     "    MedicalExample.simulate()\n",
     "    t_end = time()\n",
     "    print(\n",
diff --git a/examples/ConsumptionSaving/example_ConsMedModel.py b/examples/ConsumptionSaving/example_ConsMedModel.py
index 57c64dbce..afff5e6e1 100644
--- a/examples/ConsumptionSaving/example_ConsMedModel.py
+++ b/examples/ConsumptionSaving/example_ConsMedModel.py
@@ -110,8 +110,8 @@
     t_start = time()
     MedicalExample.T_sim = 100
     MedicalExample.track_vars = ["mLvlNow", "cLvlNow", "MedNow"]
-    MedicalExample.makeShockHistory()
-    MedicalExample.initializeSim()
+    MedicalExample.make_shock_history()
+    MedicalExample.initialize_sim()
     MedicalExample.simulate()
     t_end = time()
     print(
diff --git a/examples/ConsumptionSaving/example_ConsPortfolioModel.ipynb b/examples/ConsumptionSaving/example_ConsPortfolioModel.ipynb
index 08d1622eb..f4c1a231d 100644
--- a/examples/ConsumptionSaving/example_ConsPortfolioModel.ipynb
+++ b/examples/ConsumptionSaving/example_ConsPortfolioModel.ipynb
@@ -175,7 +175,7 @@
     "# Now simulate this consumer type\n",
     "MyType.track_vars = ['cNrm', 'aNrm', 't_age']\n",
     "MyType.T_sim = 100\n",
-    "MyType.initializeSim()\n",
+    "MyType.initialize_sim()\n",
     "MyType.simulate()"
    ]
   },
diff --git a/examples/ConsumptionSaving/example_ConsPortfolioModel.py b/examples/ConsumptionSaving/example_ConsPortfolioModel.py
index 4b5e5b6ab..b734f4f25 100644
--- a/examples/ConsumptionSaving/example_ConsPortfolioModel.py
+++ b/examples/ConsumptionSaving/example_ConsPortfolioModel.py
@@ -43,7 +43,7 @@
 # Now simulate this consumer type
 MyType.track_vars = ['cNrm', 'ShareNow', 'aNrmNow', 't_age']
 MyType.T_sim = 100
-MyType.initializeSim()
+MyType.initialize_sim()
 MyType.simulate()
 
 # %%
diff --git a/examples/ConsumptionSaving/example_ConsPrefShockModel.ipynb b/examples/ConsumptionSaving/example_ConsPrefShockModel.ipynb
index 1a50da27a..51d7f8b79 100644
--- a/examples/ConsumptionSaving/example_ConsPrefShockModel.ipynb
+++ b/examples/ConsumptionSaving/example_ConsPrefShockModel.ipynb
@@ -226,8 +226,8 @@
     "if do_simulation:\n",
     "    PrefShockExample.T_sim = 120\n",
     "    PrefShockExample.track_vars = [\"cNrm\"]\n",
-    "    PrefShockExample.makeShockHistory()  # This is optional\n",
-    "    PrefShockExample.initializeSim()\n",
+    "    PrefShockExample.make_shock_history()  # This is optional\n",
+    "    PrefShockExample.initialize_sim()\n",
     "    PrefShockExample.simulate()"
    ]
   },
@@ -398,7 +398,7 @@
     "if do_simulation:\n",
     "    KinkyPrefExample.T_sim = 120\n",
     "    KinkyPrefExample.track_vars = [\"cNrm\", \"PrefShk\"]\n",
-    "    KinkyPrefExample.initializeSim()\n",
+    "    KinkyPrefExample.initialize_sim()\n",
     "    KinkyPrefExample.simulate()"
    ]
   }
diff --git a/examples/ConsumptionSaving/example_ConsPrefShockModel.py b/examples/ConsumptionSaving/example_ConsPrefShockModel.py
index 7aabdc73c..a2aaf2352 100644
--- a/examples/ConsumptionSaving/example_ConsPrefShockModel.py
+++ b/examples/ConsumptionSaving/example_ConsPrefShockModel.py
@@ -113,8 +113,8 @@
 if do_simulation:
     PrefShockExample.T_sim = 120
     PrefShockExample.track_vars = ['cNrm']
-    PrefShockExample.makeShockHistory()  # This is optional
-    PrefShockExample.initializeSim()
+    PrefShockExample.make_shock_history()  # This is optional
+    PrefShockExample.initialize_sim()
     PrefShockExample.simulate()
 
 # %% [markdown]
@@ -181,5 +181,5 @@
 if do_simulation:
     KinkyPrefExample.T_sim = 120
     KinkyPrefExample.track_vars = ['cNrm', "PrefShkNow"]
-    KinkyPrefExample.initializeSim()
+    KinkyPrefExample.initialize_sim()
     KinkyPrefExample.simulate()
diff --git a/examples/ConsumptionSaving/example_ConsRepAgentModel.ipynb b/examples/ConsumptionSaving/example_ConsRepAgentModel.ipynb
index b6e6f3fb8..170d22837 100644
--- a/examples/ConsumptionSaving/example_ConsRepAgentModel.ipynb
+++ b/examples/ConsumptionSaving/example_ConsRepAgentModel.ipynb
@@ -121,7 +121,7 @@
     "# Simulate the representative agent model\n",
     "RAexample.T_sim = 2000\n",
     "RAexample.track_vars = [\"cNrm\", \"mNrm\", \"Rfree\", \"wRte\"]\n",
-    "RAexample.initializeSim()\n",
+    "RAexample.initialize_sim()\n",
     "t_start = time()\n",
     "RAexample.simulate()\n",
     "t_end = time()\n",
@@ -148,7 +148,7 @@
     },
     {
      "data": {
-      "image/png": "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\n",
+      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYAAAAD4CAYAAADlwTGnAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAAAvMElEQVR4nO3deXyU1fX48c/JBiSsSdgkhAQS9p2RXXBBNlHcxa1qbdH+tK3a+q3axRattbWt2mqt1GLVKmoVFBVEZBE3loR9J2FNCGSDEAhkm/P74xkwIEgCkzwzmfN+vfJi5llmDgO555l773OuqCrGGGNCT5jbARhjjHGHJQBjjAlRlgCMMSZEWQIwxpgQZQnAGGNCVITbAZxKfHy8JiUluR2GMcYEjfT09HxVbVmTcwIyASQlJZGWluZ2GMYYEzREZGdNz7EuIGOMCVGWAIwxJkRZAjDGmBBlCcAYY0KUJQBjjAlRlgCMMSZEWQIwxpgQFZD3ARhjjKmmygrY+eVZnWoJwBhjgk1lBez8Ata/Bxs/gJL8s3oZSwDGGBMMTtXoR0ZD5zHQ/Ur43VU1fklLAMYYE6hO2+iPhR5XQsqlEBV91i9/xgQgItOACUCuqvY8xf4HgZurvF43oKWqForIDqAYqAQqVNVz1pEaY0woON7oz4SNH/oa/RjnSt8PjX5V1fkG8B/gOeDVU+1U1aeApwBE5HLgflUtrHLIRap6dh1UxhgTCiorYMfnsOE935V+gdPodxnrdO+kjPJbo1/VGROAqi4WkaRqvt6NwPRzisgYY0LBmRr91EshslGthuC3MQARiQbGAvdW2azAJyKiwIuqOvU7zp8MTAZITEz0V1jGGBM4vF7Y9TWsewc2vH9io9/jKudKv5Yb/ar8OQh8OfDlSd0/w1U1W0RaAfNEZJOqLj7Vyb7kMBXA4/GoH+Myxhj3qMlen_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\n",
       "text/plain": [
        "<Figure size 432x288 with 1 Axes>"
       ]
@@ -195,7 +195,7 @@
     "# Simulate the two state representative agent model\n",
     "RAmarkovExample.T_sim = 2000\n",
     "RAmarkovExample.track_vars = [\"cNrm\", \"mNrm\", \"Rfree\", \"wRte\", \"Mrkv\"]\n",
-    "RAmarkovExample.initializeSim()\n",
+    "RAmarkovExample.initialize_sim()\n",
     "t_start = time()\n",
     "RAmarkovExample.simulate()\n",
     "t_end = time()\n",
diff --git a/examples/ConsumptionSaving/example_ConsRepAgentModel.py b/examples/ConsumptionSaving/example_ConsRepAgentModel.py
index e1e11eaf2..8730285bb 100644
--- a/examples/ConsumptionSaving/example_ConsRepAgentModel.py
+++ b/examples/ConsumptionSaving/example_ConsRepAgentModel.py
@@ -56,7 +56,7 @@
 # Simulate the representative agent model
 RAexample.T_sim = 2000
 RAexample.track_vars = ['cNrm', 'mNrm', "Rfree", "wRte"]
-RAexample.initializeSim()
+RAexample.initialize_sim()
 t_start = time()
 RAexample.simulate()
 t_end = time()
@@ -90,7 +90,7 @@
 # Simulate the two state representative agent model
 RAmarkovExample.T_sim = 2000
 RAmarkovExample.track_vars = ['cNrm', 'mNrm', "Rfree", "wRte", "MrkvNow"]
-RAmarkovExample.initializeSim()
+RAmarkovExample.initialize_sim()
 t_start = time()
 RAmarkovExample.simulate()
 t_end = time()
diff --git a/examples/ConsumptionSaving/example_TractableBufferStockModel.ipynb b/examples/ConsumptionSaving/example_TractableBufferStockModel.ipynb
index a520e64f4..9bc8ad1c4 100644
--- a/examples/ConsumptionSaving/example_TractableBufferStockModel.ipynb
+++ b/examples/ConsumptionSaving/example_TractableBufferStockModel.ipynb
@@ -114,8 +114,8 @@
     "if do_simulation:\n",
     "    ExampleType(**simulation_values)  # Set attributes needed for simulation\n",
     "    ExampleType.track_vars = [\"mLvl\"]\n",
-    "    ExampleType.makeShockHistory()\n",
-    "    ExampleType.initializeSim()\n",
+    "    ExampleType.make_shock_history()\n",
+    "    ExampleType.initialize_sim()\n",
     "    ExampleType.simulate()"
    ]
   },
diff --git a/examples/ConsumptionSaving/example_TractableBufferStockModel.py b/examples/ConsumptionSaving/example_TractableBufferStockModel.py
index c121c8b21..30476f049 100644
--- a/examples/ConsumptionSaving/example_TractableBufferStockModel.py
+++ b/examples/ConsumptionSaving/example_TractableBufferStockModel.py
@@ -48,8 +48,8 @@
 if do_simulation:
     ExampleType(**simulation_values)  # Set attributes needed for simulation
     ExampleType.track_vars = ["mLvl"]
-    ExampleType.makeShockHistory()
-    ExampleType.initializeSim()
+    ExampleType.make_shock_history()
+    ExampleType.initialize_sim()
     ExampleType.simulate()
 
 
diff --git a/examples/FashionVictim/FashionVictimModel.py b/examples/FashionVictim/FashionVictimModel.py
index 2913407fb..7f815e9e3 100644
--- a/examples/FashionVictim/FashionVictimModel.py
+++ b/examples/FashionVictim/FashionVictimModel.py
@@ -143,7 +143,7 @@ def __init__(self,**kwds):
         # Add class-specific features
         self.time_inv = ['DiscFac','conformUtilityFunc','punk_utility','jock_utility','switchcost_J2P','switchcost_P2J','pGrid','pEvolution','pref_shock_mag']
         self.time_vary = []
-        self.solveOnePeriod = solveFashion
+        self.solve_one_period = solveFashion
         self.update()
 
     def updateEvolution(self):
@@ -205,13 +205,13 @@ def reset(self):
         -------
         None
         '''
-        self.resetRNG()
+        self.reset_rng()
         sNow = np.zeros(self.pop_size)
         Shk  = self.RNG.rand(self.pop_size)
         sNow[Shk < self.p_init] = 1
         self.sNow = sNow
 
-    def preSolve(self):
+    def pre_solve(self):
         '''
         Updates the punk proportion evolution array by calling self.updateEvolution().
 
@@ -228,7 +228,7 @@ def preSolve(self):
         # the sufficient statistics describing it are sent back to agents.
         self.updateEvolution()
 
-    def postSolve(self):
+    def post_solve(self):
         '''
         Unpack the behavioral and value functions for more parsimonious access.
 
@@ -486,8 +486,8 @@ def main():
                         reap_vars     = ['sNow'],
                         track_vars    = ['pNow'],
                         dyn_vars      = ['pNextIntercept','pNextSlope','pNextWidth'],
-                        millRule      = calcPunkProp,
-                        calcDynamics  = calcFashionEvoFunc,
+                        mill_rule      = calcPunkProp,
+                        calc_dynamics  = calcFashionEvoFunc,
                         act_T         = 1000,
                         tolerance     = 0.01)
     TestMarket.pNow_init = 0.5
diff --git a/examples/GenIncProcessModel/GenIncProcessModel.ipynb b/examples/GenIncProcessModel/GenIncProcessModel.ipynb
index 52979fadc..11b9710c1 100644
--- a/examples/GenIncProcessModel/GenIncProcessModel.ipynb
+++ b/examples/GenIncProcessModel/GenIncProcessModel.ipynb
@@ -444,7 +444,7 @@
     "# Simulate many periods to get to the stationary distribution\n",
     "ExplicitExample.T_sim = 500\n",
     "ExplicitExample.track_vars = ['mLvlNow','cLvlNow','pLvl']\n",
-    "ExplicitExample.initializeSim()\n",
+    "ExplicitExample.initialize_sim()\n",
     "ExplicitExample.simulate()\n",
     "plt.plot(np.mean(ExplicitExample.history['mLvlNow'],axis=1))\n",
     "plt.xlabel('Simulated time period')\n",
@@ -566,7 +566,7 @@
    "outputs": [
     {
      "data": {
-      "image/png": "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\n",
+      "image/png": "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_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\n",
       "text/plain": [
        "<Figure size 432x288 with 1 Axes>"
       ]
@@ -614,7 +614,7 @@
     "# Simulate some data\n",
     "PersistentExample.T_sim = 500\n",
     "PersistentExample.track_vars = ['mLvlNow','cLvlNow','pLvl']\n",
-    "PersistentExample.initializeSim()\n",
+    "PersistentExample.initialize_sim()\n",
     "PersistentExample.simulate()\n",
     "plt.plot(np.mean(PersistentExample.history['mLvlNow'],axis=1))\n",
     "plt.xlabel('Simulated time period')\n",
diff --git a/examples/GenIncProcessModel/GenIncProcessModel.py b/examples/GenIncProcessModel/GenIncProcessModel.py
index a2beb8dbb..7d02a0ae1 100644
--- a/examples/GenIncProcessModel/GenIncProcessModel.py
+++ b/examples/GenIncProcessModel/GenIncProcessModel.py
@@ -305,7 +305,7 @@
 # Simulate many periods to get to the stationary distribution
 ExplicitExample.T_sim = 500
 ExplicitExample.track_vars = ['mLvlNow','cLvlNow','pLvl']
-ExplicitExample.initializeSim()
+ExplicitExample.initialize_sim()
 ExplicitExample.simulate()
 plt.plot(np.mean(ExplicitExample.history['mLvlNow'],axis=1))
 plt.xlabel('Simulated time period')
@@ -391,7 +391,7 @@
 # Simulate some data
 PersistentExample.T_sim = 500
 PersistentExample.track_vars = ['mLvlNow','cLvlNow','pLvl']
-PersistentExample.initializeSim()
+PersistentExample.initialize_sim()
 PersistentExample.simulate()
 plt.plot(np.mean(PersistentExample.history['mLvlNow'],axis=1))
 plt.xlabel('Simulated time period')
diff --git a/examples/HowWeSolveIndShockConsumerType/HowWeSolveIndShockConsumerType.ipynb b/examples/HowWeSolveIndShockConsumerType/HowWeSolveIndShockConsumerType.ipynb
index b82762894..7ddc739da 100644
--- a/examples/HowWeSolveIndShockConsumerType/HowWeSolveIndShockConsumerType.ipynb
+++ b/examples/HowWeSolveIndShockConsumerType/HowWeSolveIndShockConsumerType.ipynb
@@ -7,7 +7,7 @@
     "# How we solve a model defined by the `IndShockConsumerType` class\n",
     "The IndShockConsumerType reprents the work-horse consumption savings model with temporary and permanent shocks to income, finite or infinite horizons, CRRA utility and more. In this DemARK we take you through the steps involved in solving one period of such a model. The inheritance chains can be a little long, so figuring out where all the parameters and methods come from can be a bit confusing. Hence this map! The intention is to make it easier to know how to inheret from IndShockConsumerType in the sense that you know where to look for specific solver logic, but also so you know can figure out which methods to overwrite or supplement in your own `AgentType` and solver!\n",
     "## The `solveConsIndShock` function\n",
-    "In HARK, a period's problem is always solved by the callable (function or callable object instance) stored in the field `solveOnePeriod`. In the case of `IndShockConsumerType`, this function is called `solveConsIndShock`. The function accepts a number of arguments, that it uses to construct an instance of either a `ConsIndShockSolverBasic` or a `ConsIndShockSolver`. These solvers both have the methods `prepareToSolve` and `solve`, that we will have a closer look at in this notebook. This means, that the logic of `solveConsIndShock` is basically:\n",
+    "In HARK, a period's problem is always solved by the callable (function or callable object instance) stored in the field `solve_one_period`. In the case of `IndShockConsumerType`, this function is called `solveConsIndShock`. The function accepts a number of arguments, that it uses to construct an instance of either a `ConsIndShockSolverBasic` or a `ConsIndShockSolver`. These solvers both have the methods `prepareToSolve` and `solve`, that we will have a closer look at in this notebook. This means, that the logic of `solveConsIndShock` is basically:\n",
     "\n",
     " 1. Check if cubic interpolation (`CubicBool`) or construction of the value function interpolant (`vFuncBool`) are requested. Construct an instance of `ConsIndShockSolverBasic` if neither are requested, else construct a `ConsIndShockSolver`. Call this `solver`.\n",
     " 1. Call `solver.prepareToSolve()`\n",
@@ -19,7 +19,7 @@
    "metadata": {},
    "source": [
     "### Two types of solvers\n",
-    "As mentioned above, `solveOnePeriod` will construct an instance of the class `ConsIndShockSolverBasic`or `ConsIndShockSolver`. The main difference is whether it uses cubic interpolation or if it explicitly constructs a value function approximation. The choice and construction of a solver instance is bullet 1) from above.\n",
+    "As mentioned above, `solve_one_period` will construct an instance of the class `ConsIndShockSolverBasic`or `ConsIndShockSolver`. The main difference is whether it uses cubic interpolation or if it explicitly constructs a value function approximation. The choice and construction of a solver instance is bullet 1) from above.\n",
     "\n",
     "#### What happens in upon construction\n",
     "Neither of the two solvers have their own `__init__`. `ConsIndShockSolver` inherits from `ConsIndShockSolverBasic` that in turn inherits from `ConsIndShockSetup`. `ConsIndShockSetup` inherits from `ConsPerfForesightSolver`, which itself is just an `Object`, so we get the inheritance structure\n",
@@ -28,11 +28,11 @@
     "\n",
     "When one of the two classes in the end of the inheritance chain is called, it will call `ConsIndShockSetup.__init__(args...)`. This takes a whole list of fixed inputs that then gets assigned to the object through a\n",
     "```\n",
-    "ConsIndShockSetup.assignParameters(solution_next,IncomeDstn,LivPrb,DiscFac,CRRA,Rfree,PermGroFac,BoroCnstArt,aXtraGrid,vFuncBool,CubicBool)\n",
+    "ConsIndShockSetup.assign_parameters(solution_next,IncomeDstn,LivPrb,DiscFac,CRRA,Rfree,PermGroFac,BoroCnstArt,aXtraGrid,vFuncBool,CubicBool)\n",
     "```\n",
     "call, that then calls\n",
     "```\n",
-    "ConsPerfForesightSolver.assignParameters(self,solution_next,DiscFac,LivPrb,CRRA,Rfree,PermGroFac)\n",
+    "ConsPerfForesightSolver.assign_parameters(self,solution_next,DiscFac,LivPrb,CRRA,Rfree,PermGroFac)\n",
     "```\n",
     "We're getting kind of detailed here, but it is simply to help us understand the inheritance structure. The methods are quite straight forward, and simply assign the list of variables to self. The ones that do not get assigned by the `ConsPerfForesightSolver` method gets assign by the `ConsIndShockSetup` method instead.\n",
     "\n",
@@ -48,7 +48,7 @@
     "```\n",
     "Again, we wish to emphasize the inheritance structure. The method in `ConsPerfForesightSolver` defines the most basic utility functions (utility, its marginal and its marginal marginal), and `ConsIndShockSolver` adds additional functions (marginal of inverse, inverse of marginal, marginal of inverse of marginal, and optionally inverse if `vFuncBool` is true).\n",
     "\n",
-    "To sum up, the `__init__` method lives in `ConsIndShockSetup`, calls `assignParameters` and `defUtilityFuncs` from `ConsPerfForesightSolver` and defines its own methods with the same names that adds some methods used to solve the `IndShockConsumerType` using EGM. The main things controlled by the end-user are whether cubic interpolation should be used, `CubicBool`, and if the value function should be explicitly formed, `vFuncBool`.\n",
+    "To sum up, the `__init__` method lives in `ConsIndShockSetup`, calls `assign_parameters` and `defUtilityFuncs` from `ConsPerfForesightSolver` and defines its own methods with the same names that adds some methods used to solve the `IndShockConsumerType` using EGM. The main things controlled by the end-user are whether cubic interpolation should be used, `CubicBool`, and if the value function should be explicitly formed, `vFuncBool`.\n",
     "### Prepare to solve\n",
     "We are now in bullet 2) from the list above. The `prepareToSolve` method is all about grabbing relevant information from next period's solution, calculating some limiting solutions. It comes from `ConsIndShockSetup` and calls two methods:\n",
     "\n",
diff --git a/examples/HowWeSolveIndShockConsumerType/HowWeSolveIndShockConsumerType.py b/examples/HowWeSolveIndShockConsumerType/HowWeSolveIndShockConsumerType.py
index b62e6575f..1b90c4ab3 100644
--- a/examples/HowWeSolveIndShockConsumerType/HowWeSolveIndShockConsumerType.py
+++ b/examples/HowWeSolveIndShockConsumerType/HowWeSolveIndShockConsumerType.py
@@ -17,7 +17,7 @@
 # # How we solve a model defined by the `IndShockConsumerType` class
 # The IndShockConsumerType reprents the work-horse consumption savings model with temporary and permanent shocks to income, finite or infinite horizons, CRRA utility and more. In this DemARK we take you through the steps involved in solving one period of such a model. The inheritance chains can be a little long, so figuring out where all the parameters and methods come from can be a bit confusing. Hence this map! The intention is to make it easier to know how to inheret from IndShockConsumerType in the sense that you know where to look for specific solver logic, but also so you know can figure out which methods to overwrite or supplement in your own `AgentType` and solver!
 # ## The `solveConsIndShock` function
-# In HARK, a period's problem is always solved by the callable (function or callable object instance) stored in the field `solveOnePeriod`. In the case of `IndShockConsumerType`, this function is called `solveConsIndShock`. The function accepts a number of arguments, that it uses to construct an instance of either a `ConsIndShockSolverBasic` or a `ConsIndShockSolver`. These solvers both have the methods `prepareToSolve` and `solve`, that we will have a closer look at in this notebook. This means, that the logic of `solveConsIndShock` is basically:
+# In HARK, a period's problem is always solved by the callable (function or callable object instance) stored in the field `solve_one_period`. In the case of `IndShockConsumerType`, this function is called `solveConsIndShock`. The function accepts a number of arguments, that it uses to construct an instance of either a `ConsIndShockSolverBasic` or a `ConsIndShockSolver`. These solvers both have the methods `prepareToSolve` and `solve`, that we will have a closer look at in this notebook. This means, that the logic of `solveConsIndShock` is basically:
 #
 #  1. Check if cubic interpolation (`CubicBool`) or construction of the value function interpolant (`vFuncBool`) are requested. Construct an instance of `ConsIndShockSolverBasic` if neither are requested, else construct a `ConsIndShockSolver`. Call this `solver`.
 #  1. Call `solver.prepareToSolve()`
@@ -25,7 +25,7 @@
 
 # %% [markdown]
 # ### Two types of solvers
-# As mentioned above, `solveOnePeriod` will construct an instance of the class `ConsIndShockSolverBasic`or `ConsIndShockSolver`. The main difference is whether it uses cubic interpolation or if it explicitly constructs a value function approximation. The choice and construction of a solver instance is bullet 1) from above.
+# As mentioned above, `solve_one_period` will construct an instance of the class `ConsIndShockSolverBasic`or `ConsIndShockSolver`. The main difference is whether it uses cubic interpolation or if it explicitly constructs a value function approximation. The choice and construction of a solver instance is bullet 1) from above.
 #
 # #### What happens in upon construction
 # Neither of the two solvers have their own `__init__`. `ConsIndShockSolver` inherits from `ConsIndShockSolverBasic` that in turn inherits from `ConsIndShockSetup`. `ConsIndShockSetup` inherits from `ConsPerfForesightSolver`, which itself is just an `Object`, so we get the inheritance structure
@@ -34,11 +34,11 @@
 #
 # When one of the two classes in the end of the inheritance chain is called, it will call `ConsIndShockSetup.__init__(args...)`. This takes a whole list of fixed inputs that then gets assigned to the object through a
 # ```
-# ConsIndShockSetup.assignParameters(solution_next,IncomeDstn,LivPrb,DiscFac,CRRA,Rfree,PermGroFac,BoroCnstArt,aXtraGrid,vFuncBool,CubicBool)
+# ConsIndShockSetup.assign_parameters(solution_next,IncomeDstn,LivPrb,DiscFac,CRRA,Rfree,PermGroFac,BoroCnstArt,aXtraGrid,vFuncBool,CubicBool)
 # ```
 # call, that then calls
 # ```
-# ConsPerfForesightSolver.assignParameters(self,solution_next,DiscFac,LivPrb,CRRA,Rfree,PermGroFac)
+# ConsPerfForesightSolver.assign_parameters(self,solution_next,DiscFac,LivPrb,CRRA,Rfree,PermGroFac)
 # ```
 # We're getting kind of detailed here, but it is simply to help us understand the inheritance structure. The methods are quite straight forward, and simply assign the list of variables to self. The ones that do not get assigned by the `ConsPerfForesightSolver` method gets assign by the `ConsIndShockSetup` method instead.
 #
@@ -54,7 +54,7 @@
 # ```
 # Again, we wish to emphasize the inheritance structure. The method in `ConsPerfForesightSolver` defines the most basic utility functions (utility, its marginal and its marginal marginal), and `ConsIndShockSolver` adds additional functions (marginal of inverse, inverse of marginal, marginal of inverse of marginal, and optionally inverse if `vFuncBool` is true).
 #
-# To sum up, the `__init__` method lives in `ConsIndShockSetup`, calls `assignParameters` and `defUtilityFuncs` from `ConsPerfForesightSolver` and defines its own methods with the same names that adds some methods used to solve the `IndShockConsumerType` using EGM. The main things controlled by the end-user are whether cubic interpolation should be used, `CubicBool`, and if the value function should be explicitly formed, `vFuncBool`.
+# To sum up, the `__init__` method lives in `ConsIndShockSetup`, calls `assign_parameters` and `defUtilityFuncs` from `ConsPerfForesightSolver` and defines its own methods with the same names that adds some methods used to solve the `IndShockConsumerType` using EGM. The main things controlled by the end-user are whether cubic interpolation should be used, `CubicBool`, and if the value function should be explicitly formed, `vFuncBool`.
 # ### Prepare to solve
 # We are now in bullet 2) from the list above. The `prepareToSolve` method is all about grabbing relevant information from next period's solution, calculating some limiting solutions. It comes from `ConsIndShockSetup` and calls two methods:
 #
diff --git a/examples/Journeys/Journey_1_PhD.ipynb b/examples/Journeys/Journey_1_PhD.ipynb
index a117a7323..a170bf05f 100644
--- a/examples/Journeys/Journey_1_PhD.ipynb
+++ b/examples/Journeys/Journey_1_PhD.ipynb
@@ -403,9 +403,9 @@
     "\n",
     "### 6.2 HARK solution \n",
     "\n",
-    "For the consumer problems, solutions of the one-period consumer's problem are found using the attribute function $\\texttt{solveOnePeriod}$. The inputs passed to this function includes also data from the subsequent periods. Before solveOnePeriod is called, the function presolve() is applied, which prepare the solution (eg. transmit the solution of the sub-sequent period as an input).\n",
+    "For the consumer problems, solutions of the one-period consumer's problem are found using the attribute function $\\texttt{solve_one_period}$. The inputs passed to this function includes also data from the subsequent periods. Before solve_one_period is called, the function pre_solve() is applied, which prepare the solution (eg. transmit the solution of the sub-sequent period as an input).\n",
     "\n",
-    "The structure of the functions which are used as solveOnePeriod reflects the agent-type class structures. Thus when you will study the source code, you firstly will read the solve classes. \n",
+    "The structure of the functions which are used as solve_one_period reflects the agent-type class structures. Thus when you will study the source code, you firstly will read the solve classes. \n",
     "\n",
     "![Hark_struct3](HARK_struct_3.png)\n",
     "\n",
diff --git a/examples/Journeys/Quickstart_tutorial/Quick_start_with_solution.ipynb b/examples/Journeys/Quickstart_tutorial/Quick_start_with_solution.ipynb
index e905155db..252223448 100644
--- a/examples/Journeys/Quickstart_tutorial/Quick_start_with_solution.ipynb
+++ b/examples/Journeys/Quickstart_tutorial/Quick_start_with_solution.ipynb
@@ -470,7 +470,7 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "Finally, you can start our simulation. Firstly, you need to decide which variables you want to track, we choose an assets level and consumption level, in the code they are called: $\\texttt{aNrmNow}$ and $\\texttt{cNrmNow}$. Next, you need to initialize the simulation by $\\texttt{initializeSim}$ method. Lastly, run the simulation by $\\texttt{simulate()}$ method.  "
+    "Finally, you can start our simulation. Firstly, you need to decide which variables you want to track, we choose an assets level and consumption level, in the code they are called: $\\texttt{aNrmNow}$ and $\\texttt{cNrmNow}$. Next, you need to initialize the simulation by $\\texttt{initialize_sim}$ method. Lastly, run the simulation by $\\texttt{simulate()}$ method.  "
    ]
   },
   {
@@ -480,7 +480,7 @@
    "outputs": [],
    "source": [
     "Example_agent_2.track_vars = ['aNrmNow','cNrm']\n",
-    "Example_agent_2.initializeSim()\n",
+    "Example_agent_2.initialize_sim()\n",
     "Example_agent_2.simulate()"
    ]
   },
@@ -819,7 +819,7 @@
    "source": [
     "#Solution\n",
     "Exercise_agent.track_vars = ['aNrmNow','cNrm']\n",
-    "Exercise_agent.initializeSim()\n",
+    "Exercise_agent.initialize_sim()\n",
     "Exercise_agent.simulate()"
    ]
   },
@@ -1220,7 +1220,7 @@
    ],
    "source": [
     "LC_agent.track_vars = ['aNrmNow','cNrm', 'aLvlNow']\n",
-    "LC_agent.initializeSim()\n",
+    "LC_agent.initialize_sim()\n",
     "LC_agent.simulate()\n",
     "\n",
     "    \n",
@@ -1551,7 +1551,7 @@
     "    setattr(Ex_agent,key,value)\n",
     "\n",
     "Ex_agent.track_vars = ['aNrmNow','cNrm', 'aLvlNow']\n",
-    "Ex_agent.initializeSim()\n",
+    "Ex_agent.initialize_sim()\n",
     "Ex_agent.simulate()\n",
     "\n",
     "\n",
diff --git a/examples/LifecycleModel/LifecycleModel.ipynb b/examples/LifecycleModel/LifecycleModel.ipynb
index a3491ed03..2b2c5591a 100644
--- a/examples/LifecycleModel/LifecycleModel.ipynb
+++ b/examples/LifecycleModel/LifecycleModel.ipynb
@@ -174,7 +174,7 @@
     "LifeCyclePop.track_vars = ['aNrm','pLvl','mNrm','cNrm','TranShk']\n",
     "\n",
     "LifeCyclePop.T_sim = 120                        # Nobody lives to be older than 145 years (=25+120)\n",
-    "LifeCyclePop.initializeSim()                    # Construct the age-25 distribution of income and assets\n",
+    "LifeCyclePop.initialize_sim()                    # Construct the age-25 distribution of income and assets\n",
     "LifeCyclePop.simulate()                         # Simulate a population behaving according to this model"
    ]
   },
diff --git a/examples/LifecycleModel/LifecycleModel.py b/examples/LifecycleModel/LifecycleModel.py
index 7f454fd45..a4350e6b8 100644
--- a/examples/LifecycleModel/LifecycleModel.py
+++ b/examples/LifecycleModel/LifecycleModel.py
@@ -83,7 +83,7 @@
 LifeCyclePop.track_vars = ['aNrm','pLvl','mNrm','cNrm','TranShk']
 
 LifeCyclePop.T_sim = 120                        # Nobody lives to be older than 145 years (=25+120)
-LifeCyclePop.initializeSim()                    # Construct the age-25 distribution of income and assets
+LifeCyclePop.initialize_sim()                    # Construct the age-25 distribution of income and assets
 LifeCyclePop.simulate()                         # Simulate a population behaving according to this model
 
 


Test patch:
diff --git a/HARK/ConsumptionSaving/tests/test_ConsAggShockModel.py b/HARK/ConsumptionSaving/tests/test_ConsAggShockModel.py
index 492f7babf..66665d3e6 100644
--- a/HARK/ConsumptionSaving/tests/test_ConsAggShockModel.py
+++ b/HARK/ConsumptionSaving/tests/test_ConsAggShockModel.py
@@ -1,4 +1,4 @@
-from HARK import distributeParams
+from HARK import distribute_params
 from HARK.ConsumptionSaving.ConsAggShockModel import (
     AggShockConsumerType,
     CobbDouglasEconomy,
@@ -19,14 +19,14 @@ def setUp(self):
         agent.cycles = 0
 
         # Make agents heterogeneous in their discount factor
-        self.agents = distributeParams(
+        self.agents = distribute_params(
             agent, "DiscFac", 3, Uniform(bot=0.90, top=0.94)  # Impatient agents
         )
 
         # Make an economy with those agents living in it
         self.economy = CobbDouglasEconomy(agents=self.agents)
 
-    def test_distributeParams(self):
+    def test_distribute_params(self):
         self.assertEqual(self.agents[1].AgentCount, 300)
 
     def test_agent(self):
@@ -166,7 +166,7 @@ def test_methods(self):
             0.3426040963137289
         )
 
-        self.economy.solveAgents()
+        self.economy.solve_agents()
 
         # testing preComputeArrays()
         self.assertAlmostEqual(
@@ -201,7 +201,7 @@ def test_methods(self):
             1.0
         )
 
-        self.economy.makeHistory()
+        self.economy.make_history()
 
         emp_totals = np.sum(self.agent.history['EmpNow'], axis = 0)
 
@@ -229,7 +229,7 @@ def test_methods(self):
             self.economy.history['Mnow'][10]
         )
 
-        new_dynamics = self.economy.updateDynamics()
+        new_dynamics = self.economy.update_dynamics()
 
         self.assertAlmostEqual(
             new_dynamics.AFunc[0].slope,
diff --git a/HARK/ConsumptionSaving/tests/test_ConsGenIncProcessModel.py b/HARK/ConsumptionSaving/tests/test_ConsGenIncProcessModel.py
index b4b77c473..0148d6afb 100644
--- a/HARK/ConsumptionSaving/tests/test_ConsGenIncProcessModel.py
+++ b/HARK/ConsumptionSaving/tests/test_ConsGenIncProcessModel.py
@@ -98,7 +98,7 @@ def test_simulation(self):
         self.agent.track_vars = [
             'aLvl',"mLvl", "cLvl", 'pLvl'
         ]
-        self.agent.initializeSim()
+        self.agent.initialize_sim()
         self.agent.simulate()
 
         self.assertAlmostEqual(
diff --git a/HARK/ConsumptionSaving/tests/test_ConsLaborModel.py b/HARK/ConsumptionSaving/tests/test_ConsLaborModel.py
index 3bba7dd1a..8bfd6b06a 100644
--- a/HARK/ConsumptionSaving/tests/test_ConsLaborModel.py
+++ b/HARK/ConsumptionSaving/tests/test_ConsLaborModel.py
@@ -17,5 +17,5 @@ def test_solution(self):
 
         self.model.T_sim = 120
         self.model.track_vars = ["bNrm", 'cNrm']
-        self.model.initializeSim()
+        self.model.initialize_sim()
         self.model.simulate()
diff --git a/HARK/ConsumptionSaving/tests/test_ConsMarkovModel.py b/HARK/ConsumptionSaving/tests/test_ConsMarkovModel.py
index 5e6f77a45..a8aee1949 100644
--- a/HARK/ConsumptionSaving/tests/test_ConsMarkovModel.py
+++ b/HARK/ConsumptionSaving/tests/test_ConsMarkovModel.py
@@ -108,6 +108,6 @@ def test_simulation(self):
         self.model.T_sim = 120
         self.model.MrkvPrbsInit = [0.25, 0.25, 0.25, 0.25]
         self.model.track_vars = ["mNrm", 'cNrm']
-        self.model.makeShockHistory()  # This is optional
-        self.model.initializeSim()
+        self.model.make_shock_history()  # This is optional
+        self.model.initialize_sim()
         self.model.simulate()
diff --git a/HARK/ConsumptionSaving/tests/test_ConsMedModel.py b/HARK/ConsumptionSaving/tests/test_ConsMedModel.py
index e5a785ebd..3b11108bb 100644
--- a/HARK/ConsumptionSaving/tests/test_ConsMedModel.py
+++ b/HARK/ConsumptionSaving/tests/test_ConsMedModel.py
@@ -15,6 +15,6 @@ def test_solution(self):
 
         self.agent.T_sim = 10
         self.agent.track_vars = ["mLvl", "cLvl", "Med"]
-        self.agent.makeShockHistory()
-        self.agent.initializeSim()
+        self.agent.make_shock_history()
+        self.agent.initialize_sim()
         self.agent.simulate()
diff --git a/HARK/ConsumptionSaving/tests/test_ConsPortfolioModel.py b/HARK/ConsumptionSaving/tests/test_ConsPortfolioModel.py
index 4937fa462..8ebfa2f9e 100644
--- a/HARK/ConsumptionSaving/tests/test_ConsPortfolioModel.py
+++ b/HARK/ConsumptionSaving/tests/test_ConsPortfolioModel.py
@@ -37,18 +37,18 @@ def test_solution(self):
             0.8498496999408691
         )
 
-    def test_simOnePeriod(self):
+    def test_sim_one_period(self):
 
         self.pcct.T_sim = 30
         self.pcct.AgentCount = 10
         self.pcct.track_vars += ['aNrm']
-        self.pcct.initializeSim()
+        self.pcct.initialize_sim()
 
         self.assertFalse(
             np.any(self.pcct.shocks['Adjust'])
         )
 
-        self.pcct.simOnePeriod()
+        self.pcct.sim_one_period()
 
         self.assertAlmostEqual(
             self.pcct.controls["Share"][0],
@@ -76,7 +76,7 @@ def test_simulation(self):
             'PermShk',
             'bNrm'
         ]
-        self.pcct.initializeSim()
+        self.pcct.initialize_sim()
 
         self.pcct.simulate()
 
diff --git a/HARK/ConsumptionSaving/tests/test_ConsPrefShockModel.py b/HARK/ConsumptionSaving/tests/test_ConsPrefShockModel.py
index db9979bf8..3e9b83e8b 100644
--- a/HARK/ConsumptionSaving/tests/test_ConsPrefShockModel.py
+++ b/HARK/ConsumptionSaving/tests/test_ConsPrefShockModel.py
@@ -32,8 +32,8 @@ def test_solution(self):
     def test_simulation(self):
         self.agent.T_sim = 10
         self.agent.track_vars = ['cNrm', "PrefShk"]
-        self.agent.makeShockHistory()  # This is optional
-        self.agent.initializeSim()
+        self.agent.make_shock_history()  # This is optional
+        self.agent.initialize_sim()
         self.agent.simulate()
 
         self.assertAlmostEqual(self.agent.history['cNrm'][0][5], 0.7366020536567589)
@@ -72,7 +72,7 @@ def test_solution(self):
     def test_simulation(self):
         self.agent.T_sim = 10
         self.agent.track_vars = ['cNrm', "PrefShk"]
-        self.agent.initializeSim()
+        self.agent.initialize_sim()
         self.agent.simulate()
 
         self.assertAlmostEqual(self.agent.history['cNrm'][0][5], 0.7717096928111515)
diff --git a/HARK/ConsumptionSaving/tests/test_ConsRepAgentModel.py b/HARK/ConsumptionSaving/tests/test_ConsRepAgentModel.py
index ce2bba109..8b9585a79 100644
--- a/HARK/ConsumptionSaving/tests/test_ConsRepAgentModel.py
+++ b/HARK/ConsumptionSaving/tests/test_ConsRepAgentModel.py
@@ -20,7 +20,7 @@ def test_simulation(self):
         # Simulate the representative agent model
         self.agent.T_sim = 100
         self.agent.track_vars = ['cNrm', "mNrm", "Rfree", "wRte"]
-        self.agent.initializeSim()
+        self.agent.initialize_sim()
         self.agent.simulate()
 
 
@@ -39,5 +39,5 @@ def test_simulation(self):
         # Simulate the representative agent model
         self.agent.T_sim = 100
         self.agent.track_vars = ['cNrm', "mNrm", "Rfree", "wRte", "Mrkv"]
-        self.agent.initializeSim()
+        self.agent.initialize_sim()
         self.agent.simulate()
diff --git a/HARK/ConsumptionSaving/tests/test_IndShockConsumerType.py b/HARK/ConsumptionSaving/tests/test_IndShockConsumerType.py
index 3b95eaa8c..d3e71e175 100644
--- a/HARK/ConsumptionSaving/tests/test_IndShockConsumerType.py
+++ b/HARK/ConsumptionSaving/tests/test_IndShockConsumerType.py
@@ -15,13 +15,13 @@ def setUp(self):
 
         self.agent.solve()
 
-    def test_getShocks(self):
-        self.agent.initializeSim()
-        self.agent.simBirth(np.array([True, False]))
-        self.agent.simOnePeriod()
-        self.agent.simBirth(np.array([False, True]))
+    def test_get_shocks(self):
+        self.agent.initialize_sim()
+        self.agent.sim_birth(np.array([True, False]))
+        self.agent.sim_one_period()
+        self.agent.sim_birth(np.array([False, True]))
 
-        self.agent.getShocks()
+        self.agent.get_shocks()
 
         self.assertEqual(self.agent.shocks['PermShk'][0], 1.0427376294215103)
         self.assertEqual(self.agent.shocks['PermShk'][1], 0.9278094171517413)
@@ -84,7 +84,7 @@ def test_ConsIndShockSolverBasic(self):
         self.assertAlmostEqual(solution.cFunc(4).tolist(), 1.484118342351686)
 
     def test_simulated_values(self):
-        self.agent.initializeSim()
+        self.agent.initialize_sim()
         self.agent.simulate()
 
         self.assertAlmostEqual(self.agent.MPCnow[1], 0.5711503906043797)
@@ -238,7 +238,7 @@ def test_infinite_horizon(self):
         )
 
         IndShockExample.track_vars = ['aNrm', "mNrm", "cNrm", 'pLvl']
-        IndShockExample.initializeSim()
+        IndShockExample.initialize_sim()
         IndShockExample.simulate()
 
         self.assertAlmostEqual(
diff --git a/HARK/ConsumptionSaving/tests/test_IndShockConsumerTypeFast.py b/HARK/ConsumptionSaving/tests/test_IndShockConsumerTypeFast.py
index d9538a7ec..6ee9e2c15 100644
--- a/HARK/ConsumptionSaving/tests/test_IndShockConsumerTypeFast.py
+++ b/HARK/ConsumptionSaving/tests/test_IndShockConsumerTypeFast.py
@@ -19,13 +19,13 @@ def setUp(self):
 
         self.agent.solve()
 
-    def test_getShocks(self):
-        self.agent.initializeSim()
-        self.agent.simBirth(np.array([True, False]))
-        self.agent.simOnePeriod()
-        self.agent.simBirth(np.array([False, True]))
+    def test_get_shocks(self):
+        self.agent.initialize_sim()
+        self.agent.sim_birth(np.array([True, False]))
+        self.agent.sim_one_period()
+        self.agent.sim_birth(np.array([False, True]))
 
-        self.agent.getShocks()
+        self.agent.get_shocks()
 
         self.assertEqual(self.agent.shocks['PermShk'][0], 1.0427376294215103)
         self.assertEqual(self.agent.shocks['PermShk'][1], 0.9278094171517413)
@@ -54,7 +54,7 @@ def test_ConsIndShockSolverBasic(self):
         )
 
     def test_simulated_values(self):
-        self.agent.initializeSim()
+        self.agent.initialize_sim()
         self.agent.simulate()
         self.assertAlmostEqual(self.agent.MPCnow[1], 0.5711503906043797)
 
@@ -166,7 +166,7 @@ def test_infinite_horizon(self):
         )
 
         IndShockExample.track_vars = ['aNrm', "mNrm", 'cNrm', 'pLvl']
-        IndShockExample.initializeSim()
+        IndShockExample.initialize_sim()
         IndShockExample.simulate()
 
         self.assertAlmostEqual(
diff --git a/HARK/ConsumptionSaving/tests/test_PerfForesightConsumerType.py b/HARK/ConsumptionSaving/tests/test_PerfForesightConsumerType.py
index 9f5a7b8fe..417a70cc5 100644
--- a/HARK/ConsumptionSaving/tests/test_PerfForesightConsumerType.py
+++ b/HARK/ConsumptionSaving/tests/test_PerfForesightConsumerType.py
@@ -60,13 +60,13 @@ def test_simulation(self):
             "T_age": None,  # Age after which simulated agents are automatically killed
         }
 
-        self.agent_infinite.assignParameters(
+        self.agent_infinite.assign_parameters(
             **SimulationParams
-        )  # This implicitly uses the assignParameters method of AgentType
+        )  # This implicitly uses the assign_parameters method of AgentType
 
         # Create PFexample object
         self.agent_infinite.track_vars = ["mNrm"]
-        self.agent_infinite.initializeSim()
+        self.agent_infinite.initialize_sim()
         self.agent_infinite.simulate()
 
         self.assertAlmostEqual(
@@ -81,7 +81,7 @@ def test_simulation(self):
 
         ## Try now with the manipulation at time step 80
 
-        self.agent_infinite.initializeSim()
+        self.agent_infinite.initialize_sim()
         self.agent_infinite.simulate(80)
 
         # This actually does nothing because aNrmNow is
diff --git a/HARK/ConsumptionSaving/tests/test_SmallOpenEconomy.py b/HARK/ConsumptionSaving/tests/test_SmallOpenEconomy.py
index a1f25ab9f..54489433b 100644
--- a/HARK/ConsumptionSaving/tests/test_SmallOpenEconomy.py
+++ b/HARK/ConsumptionSaving/tests/test_SmallOpenEconomy.py
@@ -1,5 +1,5 @@
 import copy
-from HARK import distributeParams
+from HARK import distribute_params
 from HARK.ConsumptionSaving.ConsAggShockModel import (
     AggShockConsumerType,
     SmallOpenEconomy,
@@ -17,7 +17,7 @@ def test_small_open(self):
         agent.cycles = 0
 
         # Make agents heterogeneous in their discount factor
-        agents = distributeParams(
+        agents = distribute_params(
             agent, "DiscFac", 3, Uniform(bot=0.90, top=0.94)  # Impatient agents
         )
 
diff --git a/HARK/ConsumptionSaving/tests/test_TractableBufferStockModel.py b/HARK/ConsumptionSaving/tests/test_TractableBufferStockModel.py
index c6e97030c..0c0cfcc52 100644
--- a/HARK/ConsumptionSaving/tests/test_TractableBufferStockModel.py
+++ b/HARK/ConsumptionSaving/tests/test_TractableBufferStockModel.py
@@ -17,7 +17,7 @@ def test_simulation(self):
         self.tct.aLvlInitStd = 1.0 # stdev of log initial assets for new agents
         self.tct.T_cycle = 1
         self.tct.track_vars += ["mLvl"]
-        self.tct.initializeSim()
+        self.tct.initialize_sim()
         self.tct.simulate()
 
         self.assertAlmostEqual(self.tct.history["mLvl"][15][0], 5.820630251772332)
diff --git a/HARK/ConsumptionSaving/tests/test_modelInits.py b/HARK/ConsumptionSaving/tests/test_modelInits.py
index b6d65f1af..38fef2d19 100644
--- a/HARK/ConsumptionSaving/tests/test_modelInits.py
+++ b/HARK/ConsumptionSaving/tests/test_modelInits.py
@@ -14,7 +14,7 @@
     init_lifecycle,
 )
 from HARK.ConsumptionSaving.ConsMarkovModel import MarkovConsumerType
-from HARK.utilities import plotFuncsDer, plotFuncs
+from HARK.utilities import plot_funcs_der, plot_funcs
 from copy import copy
 
 
diff --git a/HARK/tests/test_approxDstns.py b/HARK/tests/test_approxDstns.py
index b7f5159b5..468c91a7d 100644
--- a/HARK/tests/test_approxDstns.py
+++ b/HARK/tests/test_approxDstns.py
@@ -11,24 +11,24 @@
 class testsForDCEGM(unittest.TestCase):
     def setUp(self):
         # setup the parameters to loop over
-        self.muNormals = np.linspace(-3.0, 2.0, 50)
-        self.stdNormals = np.linspace(0.01, 2.0, 50)
+        self.mu_normals = np.linspace(-3.0, 2.0, 50)
+        self.std_normals = np.linspace(0.01, 2.0, 50)
 
     def test_mu_normal(self):
-        for muNormal in self.muNormals:
-            for stdNormal in self.stdNormals:
-                d = distribution.Normal(muNormal).approx(40)
-                self.assertTrue(sum(d.pmf * d.X) - muNormal < 1e-12)
+        for mu_normal in self.mu_normals:
+            for std_normal in self.std_normals:
+                d = distribution.Normal(mu_normal).approx(40)
+                self.assertTrue(sum(d.pmf * d.X) - mu_normal < 1e-12)
 
     def test_mu_lognormal_from_normal(self):
-        for muNormal in self.muNormals:
-            for stdNormal in self.stdNormals:
-                d = distribution.approxLognormalGaussHermite(40, muNormal, stdNormal)
+        for mu_normal in self.mu_normals:
+            for std_normal in self.std_normals:
+                d = distribution.approx_lognormal_gauss_hermite(40, mu_normal, std_normal)
                 self.assertTrue(
                     abs(
                         sum(d.pmf * d.X)
-                        - distribution.calcLognormalStyleParsFromNormalPars(
-                            muNormal, stdNormal
+                        - distribution.calc_lognormal_style_pars_from_normal_pars(
+                            mu_normal, std_normal
                         )[0]
                     )
                     < 1e-12
diff --git a/HARK/tests/test_core.py b/HARK/tests/test_core.py
index 64ec86e24..10b5aa588 100644
--- a/HARK/tests/test_core.py
+++ b/HARK/tests/test_core.py
@@ -1,13 +1,13 @@
 """
 This file implements unit tests for interpolation methods
 """
-from HARK.core import Model, MetricObject, distanceMetric, AgentType
+from HARK.core import Model, MetricObject, distance_metric, AgentType
 
 import numpy as np
 import unittest
 
 
-class test_distanceMetric(unittest.TestCase):
+class test_distance_metric(unittest.TestCase):
     def setUp(self):
         self.list_a = [1.0, 2.1, 3]
         self.list_b = [3.1, 4, -1.4]
@@ -18,25 +18,25 @@ def setUp(self):
 
     def test_list(self):
         # same length
-        self.assertEqual(distanceMetric(self.list_a, self.list_b), 4.4)
+        self.assertEqual(distance_metric(self.list_a, self.list_b), 4.4)
         # different length
-        self.assertEqual(distanceMetric(self.list_b, self.list_c), 1.0)
+        self.assertEqual(distance_metric(self.list_b, self.list_c), 1.0)
         # sanity check, same objects
-        self.assertEqual(distanceMetric(self.list_b, self.list_b), 0.0)
+        self.assertEqual(distance_metric(self.list_b, self.list_b), 0.0)
 
     def test_array(self):
         # same length
         self.assertEqual(
-            distanceMetric(np.array(self.list_a), np.array(self.list_b)), 4.4
+            distance_metric(np.array(self.list_a), np.array(self.list_b)), 4.4
         )
         # different length
         self.assertEqual(
-            distanceMetric(np.array(self.list_b).reshape(1, 3), np.array(self.list_c)),
+            distance_metric(np.array(self.list_b).reshape(1, 3), np.array(self.list_c)),
             1.0,
         )
         # sanity check, same objects
         self.assertEqual(
-            distanceMetric(np.array(self.list_b), np.array(self.list_b)), 0.0
+            distance_metric(np.array(self.list_b), np.array(self.list_b)), 0.0
         )
 
     def test_hark_object_distance(self):
@@ -44,20 +44,20 @@ def test_hark_object_distance(self):
         self.obj_b.distance_criteria = ["var_1", "var_2", "var_3"]
         self.obj_c.distance_criteria = ["var_5"]
         # if attributes don't exist or don't match
-        self.assertEqual(distanceMetric(self.obj_a, self.obj_b), 1000.0)
-        self.assertEqual(distanceMetric(self.obj_a, self.obj_c), 1000.0)
+        self.assertEqual(distance_metric(self.obj_a, self.obj_b), 1000.0)
+        self.assertEqual(distance_metric(self.obj_a, self.obj_c), 1000.0)
         # add single numbers to attributes
         self.obj_a.var_1, self.obj_a.var_2, self.obj_a.var_3 = 0.1, 1, 2.1
         self.obj_b.var_1, self.obj_b.var_2, self.obj_b.var_3 = 1.8, -1, 0.1
-        self.assertEqual(distanceMetric(self.obj_a, self.obj_b), 2.0)
+        self.assertEqual(distance_metric(self.obj_a, self.obj_b), 2.0)
 
         # sanity check - same objects
-        self.assertEqual(distanceMetric(self.obj_a, self.obj_a), 0.0)
+        self.assertEqual(distance_metric(self.obj_a, self.obj_a), 0.0)
 
 
 class test_MetricObject(unittest.TestCase):
     def setUp(self):
-        # similar test to distanceMetric
+        # similar test to distance_metric
         self.obj_a = MetricObject()
         self.obj_b = MetricObject()
         self.obj_c = MetricObject()
@@ -85,9 +85,9 @@ def test_solve(self):
         self.agent.time_inv = ["inv_1"]
         self.agent.vary_1 = [1.1, 1.2, 1.3, 1.4]
         self.agent.inv_1 = 1.05
-        # to test the superclass we create a dummy solveOnePeriod function
+        # to test the superclass we create a dummy solve_one_period function
         # for our agent, which doesn't do anything, instead of using a NullFunc
-        self.agent.solveOnePeriod = lambda vary_1: MetricObject()
+        self.agent.solve_one_period = lambda vary_1: MetricObject()
         self.agent.solve()
         self.assertEqual(len(self.agent.solution), 4)
         self.assertTrue(isinstance(self.agent.solution[0], MetricObject))
diff --git a/HARK/tests/test_dcegm.py b/HARK/tests/test_dcegm.py
index 0a8c95d39..3093f38c0 100644
--- a/HARK/tests/test_dcegm.py
+++ b/HARK/tests/test_dcegm.py
@@ -25,7 +25,7 @@ def test_crossing(self):
         slope_2 = (3.5 - 0.5) / (4.0 - 2.0)
         m_cross = 2.0 + (0.5 - 1.0) / (slope_1 - slope_2)
 
-        m_out, c_out, v_out = dcegm.calcMultilineEnvelope(
+        m_out, c_out, v_out = dcegm.calc_multiline_envelope(
             self.m_in, self.c_in, self.v_in, self.commonM
         )
 
@@ -45,6 +45,6 @@ def test_crossing(self):
     #     # include crossing m in common grid
     #     commonM_augmented = np.append(self.commonM, m_cross).sort()
     #
-    #     m_out, c_out, v_out = calcMultilineEnvelope(self.m_in, self.c_in, self.v_in, self.commonM)
+    #     m_out, c_out, v_out = calc_multiline_envelope(self.m_in, self.c_in, self.v_in, self.commonM)
     #
     #     self.assertTrue(
diff --git a/HARK/tests/test_discrete.py b/HARK/tests/test_discrete.py
index c33c922d7..1e1e87652 100644
--- a/HARK/tests/test_discrete.py
+++ b/HARK/tests/test_discrete.py
@@ -27,43 +27,43 @@ def setUp(self):
     def test_noShock2DBothEqualValue(self):
         # Test the value functions and policies of the 2D case
         sigma = 0.0
-        V, P = interpolation.calcLogSumChoiceProbs(self.Vs2D, sigma)
+        V, P = interpolation.calc_log_sum_choice_probs(self.Vs2D, sigma)
         self.assertTrue((V == self.Vref2D).all)
         self.assertTrue((P == self.Pref2D).all)
 
     def test_noShock2DBoth(self):
         # Test the value functions and policies of the 2D case
         sigma = 0.0
-        V, P = interpolation.calcLogSumChoiceProbs(self.Vs2D, sigma)
+        V, P = interpolation.calc_log_sum_choice_probs(self.Vs2D, sigma)
         self.assertTrue((V == self.Vref2D).all)
         self.assertTrue((P == self.Pref2D).all)
 
     def test_noShock2DIndividual(self):
         # Test the value functions and policies of the 2D case
         sigma = 0.0
-        V = interpolation.calcLogSum(self.Vs2D, sigma)
-        P = interpolation.calcChoiceProbs(self.Vs2D, sigma)
+        V = interpolation.calc_log_sum(self.Vs2D, sigma)
+        P = interpolation.calc_choice_probs(self.Vs2D, sigma)
         self.assertTrue((V == self.Vref2D).all())
         self.assertTrue((P == self.Pref2D).all())
 
     def test_noShock3DBothEqualValue(self):
         # Test the value functions and policies of the 3D case
         sigma = 0.0
-        V, P = interpolation.calcLogSumChoiceProbs(self.Vs3D, sigma)
+        V, P = interpolation.calc_log_sum_choice_probs(self.Vs3D, sigma)
         self.assertTrue((V == self.Vref3D).all)
         self.assertTrue((P == self.Pref3D).all)
 
     def test_noShock3DBoth(self):
         # Test the value functions and policies of the 3D case
         sigma = 0.0
-        V, P = interpolation.calcLogSumChoiceProbs(self.Vs3D, sigma)
+        V, P = interpolation.calc_log_sum_choice_probs(self.Vs3D, sigma)
         self.assertTrue((V == self.Vref3D).all)
         self.assertTrue((P == self.Pref3D).all)
 
     def test_noShock3DIndividual(self):
         # Test the value functions and policies of the 3D case
         sigma = 0.0
-        V = interpolation.calcLogSum(self.Vs3D, sigma)
-        P = interpolation.calcChoiceProbs(self.Vs3D, sigma)
+        V = interpolation.calc_log_sum(self.Vs3D, sigma)
+        P = interpolation.calc_choice_probs(self.Vs3D, sigma)
         self.assertTrue((V == self.Vref3D).all())
         self.assertTrue((P == self.Pref3D).all())
diff --git a/HARK/tests/test_distribution.py b/HARK/tests/test_distribution.py
index bc38da8df..e72a81d24 100644
--- a/HARK/tests/test_distribution.py
+++ b/HARK/tests/test_distribution.py
@@ -11,8 +11,8 @@
     Normal,
     Uniform,
     Weibull,
-    calcExpectation,
-    combineIndepDstns
+    calc_expectation,
+    combine_indep_dstns
 )
 
 
@@ -32,34 +32,34 @@ def test_draw(self):
             0,
         )
 
-    def test_calcExpectation(self):
+    def test_calc_expectation(self):
         dd_0_1_20 = Normal().approx(20)
         dd_1_1_40 = Normal(mu = 1).approx(40)
         dd_10_10_100 = Normal(mu = 10, sigma = 10).approx(100)
 
-        ce1 = calcExpectation(dd_0_1_20)
-        ce2 = calcExpectation(dd_1_1_40)
-        ce3 = calcExpectation(dd_10_10_100)
+        ce1 = calc_expectation(dd_0_1_20)
+        ce2 = calc_expectation(dd_1_1_40)
+        ce3 = calc_expectation(dd_10_10_100)
 
         self.assertAlmostEqual(ce1, 0.0)
         self.assertAlmostEqual(ce2, 1.0)
         self.assertAlmostEqual(ce3, 10.0)
 
-        ce4= calcExpectation(
+        ce4= calc_expectation(
             dd_0_1_20,
             lambda x: 2 ** x
         )
 
         self.assertAlmostEqual(ce4, 1.27153712)
 
-        ce5 = calcExpectation(
+        ce5 = calc_expectation(
             dd_1_1_40,
             lambda x: 2 * x
         )
 
         self.assertAlmostEqual(ce5, 2.0)
 
-        ce6 = calcExpectation(
+        ce6 = calc_expectation(
             dd_10_10_100,
             lambda x, y: 2 * x + y,
             20
@@ -67,7 +67,7 @@ def test_calcExpectation(self):
 
         self.assertAlmostEqual(ce6, 40.0)
 
-        ce7 = calcExpectation(
+        ce7 = calc_expectation(
             dd_0_1_20,
             lambda x, y: x + y,
             np.hstack(np.array([0,1,2,3,4,5]))
@@ -77,16 +77,16 @@ def test_calcExpectation(self):
 
         PermShkDstn = MeanOneLogNormal().approx(200)
         TranShkDstn = MeanOneLogNormal().approx(200)
-        IncShkDstn = combineIndepDstns(PermShkDstn, TranShkDstn)
+        IncShkDstn = combine_indep_dstns(PermShkDstn, TranShkDstn)
 
-        ce8 = calcExpectation(
+        ce8 = calc_expectation(
             IncShkDstn,
             lambda X: X[0] + X[1]
         )
 
         self.assertAlmostEqual(ce8, 2.0)
 
-        ce9 = calcExpectation(
+        ce9 = calc_expectation(
             IncShkDstn,
             lambda X, a, r: r / X[0] * a + X[1],
             np.array([0,1,2,3,4,5]), # an aNrmNow grid?
@@ -141,7 +141,7 @@ def test_Uniform(self):
             0.5488135039273248)
 
         self.assertEqual(
-            calcExpectation(uni.approx(10)),
+            calc_expectation(uni.approx(10)),
             0.5
         )
 
diff --git a/HARK/tests/test_parallel.py b/HARK/tests/test_parallel.py
index e00373668..fe86a17d8 100644
--- a/HARK/tests/test_parallel.py
+++ b/HARK/tests/test_parallel.py
@@ -1,6 +1,6 @@
 import unittest
 from HARK.ConsumptionSaving.ConsIndShockModel import PerfForesightConsumerType
-from HARK.parallel import multiThreadCommandsFake, multiThreadCommands, runCommands
+from HARK.parallel import multi_thread_commands_fake, multi_thread_commands, run_commands
 
 
 class testParallel(unittest.TestCase):
@@ -8,23 +8,23 @@ def setUp(self):
         self.agent = PerfForesightConsumerType()
         self.agents = 5 * [self.agent]
 
-    def test_multiThreadCommandsFake(self):
+    def test_multi_thread_commands_fake(self):
         # check None return if it passes
-        self.assertIsNone(multiThreadCommandsFake(self.agents, ["solve()"]))
+        self.assertIsNone(multi_thread_commands_fake(self.agents, ["solve()"]))
         # check if an undefined method of agent is called
         self.assertRaises(
-            AttributeError, multiThreadCommandsFake, self.agents, ["foobar"]
+            AttributeError, multi_thread_commands_fake, self.agents, ["foobar"]
         )
 
-    def test_multiThreadCommands(self):
+    def test_multi_thread_commands(self):
         # check None return if it passes
-        self.assertIsNone(multiThreadCommands(self.agents, ["solve()"]))
+        self.assertIsNone(multi_thread_commands(self.agents, ["solve()"]))
         # check if an undefined method of agent is called
         self.assertRaises(
-            AttributeError, multiThreadCommandsFake, self.agents, ["foobar"]
+            AttributeError, multi_thread_commands_fake, self.agents, ["foobar"]
         )
 
-    def test_runCommands(self):
-        self.assertEquals(runCommands(self.agent, ["solve()"]), self.agent)
+    def test_run_commands(self):
+        self.assertEquals(run_commands(self.agent, ["solve()"]), self.agent)
         # check if an undefined method of agent is called
-        self.assertRaises(AttributeError, runCommands, self.agent, ["foobar()"])
+        self.assertRaises(AttributeError, run_commands, self.agent, ["foobar()"])