improved overall functionality & added a bunch of new properties