Implement internal classes - closes #26