BROKEN, added other fields and refactored some methods