Added tests and some opinioated methods