Sorry for digging that old question, just wanted to share my two cents. I had to almost completely drop the very 1st es based prototype due to the fact that it had visual and logical stuff mixed in a way that I had to rewrite probably 90% of it. So this "simplicity" you mention must be treated with care, it is relatively easy to make up a walking Frankenstein and have a nice headache trying to decompose it while keeping it alive then. Now, besides it's not split into client and server yet, when I create a new component or system, I mark it and put in the package that I'm 100% know belongs to where - to the view or to the logic. For instance, when some logical, but visible for player object is destroyed and has to explode before it disappears, I create a new entity with one dedicated strictly to this visual part "explosion" component (containing explosion parameters like position, size, duration etc.), and have a system that is pure visual one, that takes all such entities, emits particles at necessary location for necessary time and then removes them. This may look like some overhead, but this way this system and this component are completely decoupled from logical (or "server") part and so, when it will come to separation, can be easily detached and put to client. Or thrown away and replaced with some other visual thing I'll invent by that time. I mean if you find it easier to process some visual stuff via components, make sure that they're well separated (some data probably will be copied from logic, but anyway).