Reworked API to make extensive use of class properties