Implement simulator, many improvements!!!