Functional method working, mostly fleshed out