not quite functional but getting there