add functionality for portability, extrapolation, and structure optimization