finished implementing the from_*() methods