more private methods, more getters and setters, more documentation.