Working in current state. Bug fixes needed to make it more efficient.