Let's finish this later... especially the stream operators