add compile api. Fixes #652