move all parser stuff to compile time