Updated to now include magic methods