Refactor a lot, add remove functionality