Add a more generic build_from method to external