building functional knowledge systems