restarted with much simpler impl