Skip to content

Instantly share code, notes, and snippets.

@HaMster21
Forked from haacked/code-review-checklist.md
Last active August 29, 2015 14:03
Show Gist options
  • Select an option

  • Save HaMster21/c9648b150acca0b9bf31 to your computer and use it in GitHub Desktop.

Select an option

Save HaMster21/c9648b150acca0b9bf31 to your computer and use it in GitHub Desktop.

Revisions

  1. HaMster21 revised this gist Jul 3, 2014. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion code-review-checklist.md
    Original file line number Diff line number Diff line change
    @@ -24,5 +24,5 @@

    #####Best Practices
    * ([DRY](https://en.wikipedia.org/wiki/Don%27t_repeat_yourself)) did you use unnecessary repetition?
    * ([KISS](https://en.wikipedia.org/wiki/KISS_principle)) can your written in a more obvious way? Are functions doing trivial things?
    * ([KISS](https://en.wikipedia.org/wiki/KISS_principle)) can your code be written in a more obvious way? Are functions doing trivial things?
    * ([SOLID](https://en.wikipedia.org/wiki/SOLID)) are you following SOLID principles?
  2. HaMster21 revised this gist Jul 3, 2014. 1 changed file with 0 additions and 2 deletions.
    2 changes: 0 additions & 2 deletions code-review-checklist.md
    Original file line number Diff line number Diff line change
    @@ -1,5 +1,3 @@
    ### Commit / Pull Request checklist

    #####General
    * Are all files added that are needed to build the code?
    * Does the change comply to project conventions (naming, repo structure, license, documentation, etc.)?
  3. HaMster21 revised this gist Jul 3, 2014. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion code-review-checklist.md
    Original file line number Diff line number Diff line change
    @@ -27,4 +27,4 @@
    #####Best Practices
    * ([DRY](https://en.wikipedia.org/wiki/Don%27t_repeat_yourself)) did you use unnecessary repetition?
    * ([KISS](https://en.wikipedia.org/wiki/KISS_principle)) can your written in a more obvious way? Are functions doing trivial things?
    * ([SOLID](https://en.wikipedia.org/wiki/SOLID_(object-oriented_design)) are you following SOLID principles?
    * ([SOLID](https://en.wikipedia.org/wiki/SOLID)) are you following SOLID principles?
  4. HaMster21 revised this gist Jul 3, 2014. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion code-review-checklist.md
    Original file line number Diff line number Diff line change
    @@ -27,4 +27,4 @@
    #####Best Practices
    * ([DRY](https://en.wikipedia.org/wiki/Don%27t_repeat_yourself)) did you use unnecessary repetition?
    * ([KISS](https://en.wikipedia.org/wiki/KISS_principle)) can your written in a more obvious way? Are functions doing trivial things?
    * ([SOLID])(https://en.wikipedia.org/wiki/SOLID_(object-oriented_design)) are you following SOLID principles?
    * ([SOLID](https://en.wikipedia.org/wiki/SOLID_(object-oriented_design)) are you following SOLID principles?
  5. HaMster21 revised this gist Jul 3, 2014. 1 changed file with 3 additions and 1 deletion.
    4 changes: 3 additions & 1 deletion code-review-checklist.md
    Original file line number Diff line number Diff line change
    @@ -25,4 +25,6 @@
    * Can the livetime and and scope of the ressource be further restricted?

    #####Best Practices
    * ([DRY](https://en.wikipedia.org/wiki/Don%27t_repeat_yourself)) did you use unnecessary repetition?
    * ([DRY](https://en.wikipedia.org/wiki/Don%27t_repeat_yourself)) did you use unnecessary repetition?
    * ([KISS](https://en.wikipedia.org/wiki/KISS_principle)) can your written in a more obvious way? Are functions doing trivial things?
    * ([SOLID])(https://en.wikipedia.org/wiki/SOLID_(object-oriented_design)) are you following SOLID principles?
  6. HaMster21 revised this gist Jul 3, 2014. 1 changed file with 2 additions and 0 deletions.
    2 changes: 2 additions & 0 deletions code-review-checklist.md
    Original file line number Diff line number Diff line change
    @@ -24,3 +24,5 @@
    * Can the ressource be allocated on the stack?
    * Can the livetime and and scope of the ressource be further restricted?

    #####Best Practices
    * ([DRY](https://en.wikipedia.org/wiki/Don%27t_repeat_yourself)) did you use unnecessary repetition?
  7. HaMster21 revised this gist Jul 2, 2014. 1 changed file with 0 additions and 2 deletions.
    2 changes: 0 additions & 2 deletions code-review-checklist.md
    Original file line number Diff line number Diff line change
    @@ -24,5 +24,3 @@
    * Can the ressource be allocated on the stack?
    * Can the livetime and and scope of the ressource be further restricted?

    - [ ] __Conventions Consistency__ Make sure naming, formatting, etc. follow our conventions and are consistent. I like a codebase that’s fairly consistent so you know what to expect.
    - [ ] __Security__: There is a whole threat and mitigation review process that falls under this bucket.
  8. HaMster21 revised this gist Jul 2, 2014. 1 changed file with 16 additions and 8 deletions.
    24 changes: 16 additions & 8 deletions code-review-checklist.md
    Original file line number Diff line number Diff line change
    @@ -1,20 +1,28 @@
    ### Commit / Pull Request checklist

    #####General
    * Are all files added that are needed to build the code?
    * Does the change comply to project conventions (naming, repo structure, license, documentation, etc.)?

    #####Tests
    * Is the code tested?
    * Are the tests showing the intention how to use the code?
    * Is the expected behavior clear?
    * Are there gaps that also need testing?

    #####Functions and Methods
    * Is the name reflecting the behavior / expected result?
    * Are parameters validated, if any?
    * Do parameters make sense? Or is there a way to get rid of them?
    * Does the return value make sense?
    * Is global state changed? Are pure/safe/trusted functions declared as such?
    * Can the function / method take the parameter by reference? Is the parameter mutated?
    * Is the name reflecting the behavior / expected result?
    * Are parameters validated, if any?
    * Do parameters make sense? Or is there a way to get rid of them?
    * Does the return value make sense?
    * Is global state changed? Are pure/safe/trusted functions declared as such?
    * Can the function / method take the parameter by reference? Is the parameter mutated?

    #####Objects
    * Are referenced ressources cleaned up?
    * Where and when are `null` references possible? Are those circumstances evaluated and / or tested?
    * Can the ressource be allocated on the stack?
    * Can the livetime and and scope of the ressource be further restricted?

    - [ ] __Null References__ (Yah yah, we know. Use F# and this goes away. We get it already.) Null references are a bitch and it’s worth looking out for them specifically.
    - [ ] __Conventions Consistency__ Make sure naming, formatting, etc. follow our conventions and are consistent. I like a codebase that’s fairly consistent so you know what to expect.
    - [ ] __Disposables__ Make sure disposable things are disposed. Look for usages of resources that should be disposed but are not.
    - [ ] __Security__: There is a whole threat and mitigation review process that falls under this bucket.
  9. HaMster21 revised this gist Jul 2, 2014. 1 changed file with 5 additions and 5 deletions.
    10 changes: 5 additions & 5 deletions code-review-checklist.md
    Original file line number Diff line number Diff line change
    @@ -1,12 +1,12 @@
    ### Commit / Pull Request checklist

    #####Tests
    * Is the code tested?
    * Are the tests showing the intention how to use the code?
    * Is the expected behavior clear?
    * Are there gaps that also need testing?
    * Is the code tested?
    * Are the tests showing the intention how to use the code?
    * Is the expected behavior clear?
    * Are there gaps that also need testing?

    ######Functions and Methods
    #####Functions and Methods
    * Is the name reflecting the behavior / expected result?
    * Are parameters validated, if any?
    * Do parameters make sense? Or is there a way to get rid of them?
  10. HaMster21 revised this gist Jul 2, 2014. 1 changed file with 2 additions and 2 deletions.
    4 changes: 2 additions & 2 deletions code-review-checklist.md
    Original file line number Diff line number Diff line change
    @@ -1,12 +1,12 @@
    ### Commit / Pull Request checklist

    ####Tests
    #####Tests
    * Is the code tested?
    * Are the tests showing the intention how to use the code?
    * Is the expected behavior clear?
    * Are there gaps that also need testing?

    ####Functions and Methods
    ######Functions and Methods
    * Is the name reflecting the behavior / expected result?
    * Are parameters validated, if any?
    * Do parameters make sense? Or is there a way to get rid of them?
  11. HaMster21 revised this gist Jul 2, 2014. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion code-review-checklist.md
    Original file line number Diff line number Diff line change
    @@ -1,4 +1,4 @@
    ## General
    ### Commit / Pull Request checklist

    ####Tests
    * Is the code tested?
  12. HaMster21 revised this gist Jul 2, 2014. 1 changed file with 2 additions and 2 deletions.
    4 changes: 2 additions & 2 deletions code-review-checklist.md
    Original file line number Diff line number Diff line change
    @@ -1,12 +1,12 @@
    ## General

    ###Tests
    ####Tests
    * Is the code tested?
    * Are the tests showing the intention how to use the code?
    * Is the expected behavior clear?
    * Are there gaps that also need testing?

    ###Functions and Methods
    ####Functions and Methods
    * Is the name reflecting the behavior / expected result?
    * Are parameters validated, if any?
    * Do parameters make sense? Or is there a way to get rid of them?
  13. HaMster21 revised this gist Jul 2, 2014. 1 changed file with 2 additions and 2 deletions.
    4 changes: 2 additions & 2 deletions code-review-checklist.md
    Original file line number Diff line number Diff line change
    @@ -1,12 +1,12 @@
    ## General

    - Tests
    ###Tests
    * Is the code tested?
    * Are the tests showing the intention how to use the code?
    * Is the expected behavior clear?
    * Are there gaps that also need testing?

    - Functions and Methods
    ###Functions and Methods
    * Is the name reflecting the behavior / expected result?
    * Are parameters validated, if any?
    * Do parameters make sense? Or is there a way to get rid of them?
  14. HaMster21 revised this gist Jul 2, 2014. 1 changed file with 2 additions and 2 deletions.
    4 changes: 2 additions & 2 deletions code-review-checklist.md
    Original file line number Diff line number Diff line change
    @@ -1,12 +1,12 @@
    ## General

    - __tests__
    - Tests
    * Is the code tested?
    * Are the tests showing the intention how to use the code?
    * Is the expected behavior clear?
    * Are there gaps that also need testing?

    - __functions and methods__
    - Functions and Methods
    * Is the name reflecting the behavior / expected result?
    * Are parameters validated, if any?
    * Do parameters make sense? Or is there a way to get rid of them?
  15. HaMster21 revised this gist Jul 2, 2014. 1 changed file with 8 additions and 8 deletions.
    16 changes: 8 additions & 8 deletions code-review-checklist.md
    Original file line number Diff line number Diff line change
    @@ -1,18 +1,18 @@
    ## General

    - [ ] __tests__
    - __tests__
    * Is the code tested?
    * Are the tests showing the intention how to use the code?
    * Is the expected behavior clear?
    * Are there gaps that also need testing?

    - [ ] __functions and methods__
    - Is the name reflecting the behavior / expected result?
    - Are parameters validated, if any?
    - Do parameters make sense? Or is there a way to get rid of them?
    - Does the return value make sense?
    - Are pure/safe/trusted functions declared as such? Is global state changed?
    - Can the function / method take the parameter by reference? Is the parameter mutated?
    - __functions and methods__
    * Is the name reflecting the behavior / expected result?
    * Are parameters validated, if any?
    * Do parameters make sense? Or is there a way to get rid of them?
    * Does the return value make sense?
    * Is global state changed? Are pure/safe/trusted functions declared as such?
    * Can the function / method take the parameter by reference? Is the parameter mutated?

    - [ ] __Null References__ (Yah yah, we know. Use F# and this goes away. We get it already.) Null references are a bitch and it’s worth looking out for them specifically.
    - [ ] __Conventions Consistency__ Make sure naming, formatting, etc. follow our conventions and are consistent. I like a codebase that’s fairly consistent so you know what to expect.
  16. HaMster21 revised this gist Jul 2, 2014. 1 changed file with 4 additions and 4 deletions.
    8 changes: 4 additions & 4 deletions code-review-checklist.md
    Original file line number Diff line number Diff line change
    @@ -1,10 +1,10 @@
    ## General

    - [ ] __tests__
    - Is the code tested?
    - Are the tests showing the intention how to use the code?
    - Is the expected behavior clear?
    - Are there gaps that also need testing?
    * Is the code tested?
    * Are the tests showing the intention how to use the code?
    * Is the expected behavior clear?
    * Are there gaps that also need testing?

    - [ ] __functions and methods__
    - Is the name reflecting the behavior / expected result?
  17. HaMster21 revised this gist Jul 2, 2014. 1 changed file with 9 additions and 3 deletions.
    12 changes: 9 additions & 3 deletions code-review-checklist.md
    Original file line number Diff line number Diff line change
    @@ -1,13 +1,19 @@
    ## General

    - [ ] __Unit tests__
    - [ ] __tests__
    - Is the code tested?
    - Are the tests showing the intention how to use the code?
    - Is the expected behavior clear?
    - Are there gaps that also need testing?

    - [ ] __Method arguments__
    Make sure arguments to methods make sense and are validated.
    - [ ] __functions and methods__
    - Is the name reflecting the behavior / expected result?
    - Are parameters validated, if any?
    - Do parameters make sense? Or is there a way to get rid of them?
    - Does the return value make sense?
    - Are pure/safe/trusted functions declared as such? Is global state changed?
    - Can the function / method take the parameter by reference? Is the parameter mutated?

    - [ ] __Null References__ (Yah yah, we know. Use F# and this goes away. We get it already.) Null references are a bitch and it’s worth looking out for them specifically.
    - [ ] __Conventions Consistency__ Make sure naming, formatting, etc. follow our conventions and are consistent. I like a codebase that’s fairly consistent so you know what to expect.
    - [ ] __Disposables__ Make sure disposable things are disposed. Look for usages of resources that should be disposed but are not.
  18. HaMster21 revised this gist Jul 2, 2014. 1 changed file with 4 additions and 2 deletions.
    6 changes: 4 additions & 2 deletions code-review-checklist.md
    Original file line number Diff line number Diff line change
    @@ -1,8 +1,10 @@
    ## General

    - [ ] __Unit tests__

    Is the code tested? Are the tests showing the intention how to use the code? Are there gaps that also need testing? Is the expected behavior clear?
    - Is the code tested?
    - Are the tests showing the intention how to use the code?
    - Is the expected behavior clear?
    - Are there gaps that also need testing?

    - [ ] __Method arguments__
    Make sure arguments to methods make sense and are validated.
  19. HaMster21 revised this gist Jul 2, 2014. 1 changed file with 2 additions and 0 deletions.
    2 changes: 2 additions & 0 deletions code-review-checklist.md
    Original file line number Diff line number Diff line change
    @@ -1,7 +1,9 @@
    ## General

    - [ ] __Unit tests__

    Is the code tested? Are the tests showing the intention how to use the code? Are there gaps that also need testing? Is the expected behavior clear?

    - [ ] __Method arguments__
    Make sure arguments to methods make sense and are validated.
    - [ ] __Null References__ (Yah yah, we know. Use F# and this goes away. We get it already.) Null references are a bitch and it’s worth looking out for them specifically.
  20. HaMster21 revised this gist Jul 2, 2014. 1 changed file with 7 additions and 5 deletions.
    12 changes: 7 additions & 5 deletions code-review-checklist.md
    Original file line number Diff line number Diff line change
    @@ -1,8 +1,10 @@
    ## General

    - [ ] __Unit tests__: Is the code tested? Are the tests showing the intention how to use the code? Are there gaps that also need testing? Is the expected behavior clear?
    - [ ] __Method arguments__" Make sure arguments to methods make sense and are validated.
    - [ ] __Null References__" (Yah yah, we know. Use F# and this goes away. We get it already.) Null references are a bitch and it’s worth looking out for them specifically.
    - [ ] __Conventions Consistency__" Make sure naming, formatting, etc. follow our conventions and are consistent. I like a codebase that’s fairly consistent so you know what to expect.
    - [ ] __Disposables__: Make sure disposable things are disposed. Look for usages of resources that should be disposed but are not.
    - [ ] __Unit tests__
    Is the code tested? Are the tests showing the intention how to use the code? Are there gaps that also need testing? Is the expected behavior clear?
    - [ ] __Method arguments__
    Make sure arguments to methods make sense and are validated.
    - [ ] __Null References__ (Yah yah, we know. Use F# and this goes away. We get it already.) Null references are a bitch and it’s worth looking out for them specifically.
    - [ ] __Conventions Consistency__ Make sure naming, formatting, etc. follow our conventions and are consistent. I like a codebase that’s fairly consistent so you know what to expect.
    - [ ] __Disposables__ Make sure disposable things are disposed. Look for usages of resources that should be disposed but are not.
    - [ ] __Security__: There is a whole threat and mitigation review process that falls under this bucket.
  21. HaMster21 revised this gist Jul 2, 2014. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion code-review-checklist.md
    Original file line number Diff line number Diff line change
    @@ -1,6 +1,6 @@
    ## General

    - [ ] __Unit tests__: Review unit tests first. Unit tests are a fantastic way to grasp how code is meant to be used by others and to learn what the expected behavior is. Are there any test gaps that should be there?
    - [ ] __Unit tests__: Is the code tested? Are the tests showing the intention how to use the code? Are there gaps that also need testing? Is the expected behavior clear?
    - [ ] __Method arguments__" Make sure arguments to methods make sense and are validated.
    - [ ] __Null References__" (Yah yah, we know. Use F# and this goes away. We get it already.) Null references are a bitch and it’s worth looking out for them specifically.
    - [ ] __Conventions Consistency__" Make sure naming, formatting, etc. follow our conventions and are consistent. I like a codebase that’s fairly consistent so you know what to expect.
  22. HaMster21 revised this gist Jul 2, 2014. 1 changed file with 6 additions and 13 deletions.
    19 changes: 6 additions & 13 deletions code-review-checklist.md
    Original file line number Diff line number Diff line change
    @@ -1,15 +1,8 @@
    ## General

    [ ] __Unit tests__: Review unit tests first. Unit tests are a fantastic way to grasp how code is meant to be used by others and to learn what the expected behavior is. Are there any test gaps that should be there?
    2. __Method arguments__" Make sure arguments to methods make sense and are validated.
    3. __Null References__" (Yah yah, we know. Use F# and this goes away. We get it already.) Null references are a bitch and it’s worth looking out for them specifically.
    4. __Conventions Consistency__" Make sure naming, formatting, etc. follow our conventions and are consistent. I like a codebase that’s fairly consistent so you know what to expect.
    5. __Disposables__: Make sure disposable things are disposed. Look for usages of resources that should be disposed but are not.
    6. __Security__: There is a whole threat and mitigation review process that falls under this bucket.

    ## WPF + ReactiveUI

    1. __Updating UI__: Make sure view model properties are updated on the main scheduler (UI thread). This is because we bind the UI to these properties and the UI can only be updated on the UI thread.
    2. __ObserveOn__: When kicking off truly async operations, make sure we `ObserveOn(RxApp.DeferredScheduler)` soon after (related to previous).
    3. __Over subscriptions__: Make sure we're not over subscribing to deferred observables etc that could lead to multiple operations.
    4. ???
    - [ ] __Unit tests__: Review unit tests first. Unit tests are a fantastic way to grasp how code is meant to be used by others and to learn what the expected behavior is. Are there any test gaps that should be there?
    - [ ] __Method arguments__" Make sure arguments to methods make sense and are validated.
    - [ ] __Null References__" (Yah yah, we know. Use F# and this goes away. We get it already.) Null references are a bitch and it’s worth looking out for them specifically.
    - [ ] __Conventions Consistency__" Make sure naming, formatting, etc. follow our conventions and are consistent. I like a codebase that’s fairly consistent so you know what to expect.
    - [ ] __Disposables__: Make sure disposable things are disposed. Look for usages of resources that should be disposed but are not.
    - [ ] __Security__: There is a whole threat and mitigation review process that falls under this bucket.
  23. HaMster21 revised this gist Jul 2, 2014. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion code-review-checklist.md
    Original file line number Diff line number Diff line change
    @@ -1,6 +1,6 @@
    ## General

    [ ] __Unit tests__: Review unit tests first. Unit tests are a fantastic way to grasp how code is meant to be used by others and to learn what the expected behavior is. Are there any test gaps that should be there?
    [ ] __Unit tests__: Review unit tests first. Unit tests are a fantastic way to grasp how code is meant to be used by others and to learn what the expected behavior is. Are there any test gaps that should be there?
    2. __Method arguments__" Make sure arguments to methods make sense and are validated.
    3. __Null References__" (Yah yah, we know. Use F# and this goes away. We get it already.) Null references are a bitch and it’s worth looking out for them specifically.
    4. __Conventions Consistency__" Make sure naming, formatting, etc. follow our conventions and are consistent. I like a codebase that’s fairly consistent so you know what to expect.
  24. HaMster21 revised this gist Jul 2, 2014. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion code-review-checklist.md
    Original file line number Diff line number Diff line change
    @@ -1,6 +1,6 @@
    ## General

    [ ] __Unit tests__: Review unit tests first. Unit tests are a fantastic way to grasp how code is meant to be used by others and to learn what the expected behavior is. Are there any test gaps that should be there?
    [ ] __Unit tests__: Review unit tests first. Unit tests are a fantastic way to grasp how code is meant to be used by others and to learn what the expected behavior is. Are there any test gaps that should be there?
    2. __Method arguments__" Make sure arguments to methods make sense and are validated.
    3. __Null References__" (Yah yah, we know. Use F# and this goes away. We get it already.) Null references are a bitch and it’s worth looking out for them specifically.
    4. __Conventions Consistency__" Make sure naming, formatting, etc. follow our conventions and are consistent. I like a codebase that’s fairly consistent so you know what to expect.
  25. HaMster21 revised this gist Jul 2, 2014. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion code-review-checklist.md
    Original file line number Diff line number Diff line change
    @@ -1,6 +1,6 @@
    ## General

    1. __Unit tests__: Review unit tests first. Unit tests are a fantastic way to grasp how code is meant to be used by others and to learn what the expected behavior is. Are there any test gaps that should be there?
    [ ] __Unit tests__: Review unit tests first. Unit tests are a fantastic way to grasp how code is meant to be used by others and to learn what the expected behavior is. Are there any test gaps that should be there?
    2. __Method arguments__" Make sure arguments to methods make sense and are validated.
    3. __Null References__" (Yah yah, we know. Use F# and this goes away. We get it already.) Null references are a bitch and it’s worth looking out for them specifically.
    4. __Conventions Consistency__" Make sure naming, formatting, etc. follow our conventions and are consistent. I like a codebase that’s fairly consistent so you know what to expect.
  26. @haacked haacked created this gist Oct 28, 2013.
    15 changes: 15 additions & 0 deletions code-review-checklist.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,15 @@
    ## General

    1. __Unit tests__: Review unit tests first. Unit tests are a fantastic way to grasp how code is meant to be used by others and to learn what the expected behavior is. Are there any test gaps that should be there?
    2. __Method arguments__" Make sure arguments to methods make sense and are validated.
    3. __Null References__" (Yah yah, we know. Use F# and this goes away. We get it already.) Null references are a bitch and it’s worth looking out for them specifically.
    4. __Conventions Consistency__" Make sure naming, formatting, etc. follow our conventions and are consistent. I like a codebase that’s fairly consistent so you know what to expect.
    5. __Disposables__: Make sure disposable things are disposed. Look for usages of resources that should be disposed but are not.
    6. __Security__: There is a whole threat and mitigation review process that falls under this bucket.

    ## WPF + ReactiveUI

    1. __Updating UI__: Make sure view model properties are updated on the main scheduler (UI thread). This is because we bind the UI to these properties and the UI can only be updated on the UI thread.
    2. __ObserveOn__: When kicking off truly async operations, make sure we `ObserveOn(RxApp.DeferredScheduler)` soon after (related to previous).
    3. __Over subscriptions__: Make sure we're not over subscribing to deferred observables etc that could lead to multiple operations.
    4. ???