Added more tests. Better basic product architecture with __get and __set