big smoke

BaseItem, various refactorings, BaseEntity.touch() etc