Prepared for prototype + refactor