Methods in Ocean methods are any function that is found from a given value. It can be associated with the type or the value An interface is a set of methods. A concrete type can export an interface and a formal type can require an interface. A value can be combined with a concrete interface to override or augment what it's type natively has. Value methods are not so easily overridden. The first arg of a method must match the owner, and other args can be of that type Interface names are per module. Method names are per interface. When a variable supports multiple interfaces and names don't conflict, interface name can be left out. maybe value method use . and type methods use : ?? that would make "case functionname :" tricky to parse. Thought: Rather than anon structs, allow struct AND references to be marked as 'follow' so anything behind the object appears in the parent. Then foo.method can possible follow a chain of pointers from foo to find the method. foo might be an inode and have a pointer to a superblock, which has a pointer to a methods struture contains 'getattr'. Then 'foo.getattr' transparently becomes 'foo.super.super_methods.getattr. Question. In what circumstances is 'foo' passed as first argument? Probably it happens by default, but some syntactic escape allows something else to be passed. Maybe foo::something() ??