Cleaned up my design some more making it more event driven over procedural.