Refactor to a more prototypal design