change name, straighten up functions