def is_valid_move(data, obstacles, proposed_move):
    """Function that validates if we can perform given action without hitting wall, self, or other snake"""

    if proposed_move["x"]<0 or proposed_move["y"]<0:
        return False

    board_height = data["board"]["height"]
    board_width = data["board"]["width"]

    if proposed_move["x"]==board_width or proposed_move["y"]==board_height:
        return False

    if proposed_move in obstacles:
        return False
    return True