separate main backsnap class to two classes