Added several features and changed around some basics