complete refactor,  new feature: custom characters, better docs