base implementation of some parts