final project non-smooth impl