! Changed structure and some methods