Functional. Work in progress on M, m, Perfect, etc