init func branch

this will be merged into main when complete
manual merge

because merges are hard