add some functional code