Cleaned up interface both internally and externally