saved a lot more bytes after a brainstorming session with @neuling