Created by: mjulian31
@ka_code_typed implementation rebased and ready to merge @vchuravy
@ka_code_typed
@vchuravy