Needs a rewrite or merge

edit