started principal implementation