make better functions