separated common parts only from API