completely overhauling the way we do extend to use getters and setters