Based on code from !530 (closed) after rebase and squash. Added additional commit with changes after latest review comments.
Based on code from !530 (closed) after rebase and squash. Added additional commit with changes after latest review comments.