fixed some bugs, tried to add pushing behaviour (BUGGED)