Some more documentation'
Added some functional functions
Uses composite instead