externalize and generify (doesn't work at this time)