Instead of using .m.foo() method stuff, it would be better and cleaner probably to support [generic methods](https://en.wikipedia.org/wiki/Generic_function).