Added improvement ideas from @gensyn
[TODO] Use Moo for getter/setter methods