half working, need to discriminate stuff