Most important things done, not 100% working yet