Tested and working but it is dirty and needs cleaned up.