refactor... or a more complex core :)