finish major functionality