Refactored some methods to keep proper abstraction/encapsulation