Initial Implementation, needs some work still