refactor, mess + cleanup