added and split some methods