some linting, wow, needs work...