Update, added hook module, full refactoring