add logic + bug fixes