50% done with refactor
?