All of this what I'm doing now is a WIP