improve architecture