pre and post are moved at the token level only - implementation for string is in this commit