issue #5 - moved parser into core module