splitting out the parser as a fully independent component; this requires a very lightweight 'expressions' project below 'api'