This is far from perfect yet.