extracted for future usage