code style
correct docblock return value
move some logic into traits

let's pretend php has partial classes!