improved design + fixed dependencies