How does Subproto work?