Redefine syntax and reimplement printer