added programming principles