moved functions to concepts.js