added lazy and curry