lib support, and only compile freevars