fleshed out trait further.
adds tests