difference between functionality and non functionality