basic functionality complete, laziness ftw